В оболочке я делаю простой whoami, и я получаю geoff, что хорошо, так как это я.
В php-файле у меня есть shell_exec ('whoami'); и я никого не получаю.
Мне кажется, что это разница, которая может объяснить мою оригинальную проблему: imagemagick работает с оболочкой, но не работает из PHP-скрипта.
Теперь, работая через этот сайт, я думаю, это означает, что мой apache xampp назначает другое имя пользователя, а не мое обычное имя пользователя.
Я попытался изменить свой логин в php с помощью sudo, но пока это не работает для меня.
Может ли кто-нибудь помочь?
@anubhava правильно спрашивает, почему вы получаете два разных ответа, когда запускаете whoami
. Однако, если вы пытаетесь преобразовать PDF в PNG с помощью ImageMagick (как в комментарии к вопросу), даже использование полного пути к convert
ImageMagick не будет работать, если PATH сценария не содержит путь к Ghostscript также. Без использования каких-либо пользовательских путей вы можете добавить:
putenv("PATH=/usr/local/bin:/usr/bin:/bin");
Или что-то подобное в зависимости от вашей установки. Исполняемый файл gs
должен находиться в пути пользователя вашего скрипта где-либо, или ImageMagick не сможет конвертировать файлы PDF или EPS.
Это должно быть просто понять.
geoff
и это то, что вы получаете. nobody
в качестве владельца, поэтому это то, что вы получаете, когда вы shell_exec('whoami');
от PHP. Результат от whoami
вы получили, просто означает, что ваш apache работает как nobody
. Это так, как должно быть, и я настоятельно рекомендую не изменять это.
Причина, по которой imagemagick не работает, вероятно, напрямую не связана с привилегиями, с которыми выполняется ваш PHP-код. Недостаточно информации для точной диагностики проблемы, но, скорее всего, это ошибка исполняемого файла или поиска в библиотеке. Убедитесь, что бинарные файлы и библиотеки не читаются nobody
и что они находятся в местоположении, где apache найдет их. В частности, убедитесь, что $PATH
и $LD_LIBRARY_PATH
настроены правильно.