Intereting Posts
Как создать функцию в PHP, которая сортирует массив на основе одного из его ключей Параметры в документации PHP, квадратные скобки? Функция PHP: найти имя переменной аргумента и номер строки вызова функции Regex PHP – заменить цвета в имени – но только если они в цвете, а не в названиях компаний Zend Framework 2 Flash Messenger не возвращает сообщений Как заставить PHP-GA перестать увеличивать посетителей в режиме реального времени в Google Analytics? Преобразование экспоненциального числа в десятичное число в php Сохранение переменных формы при смене ajax правильный способ загрузки изображения в базу данных Обрезка изображения Codeigniter не работает Как вычитать с помощью SQL в MYSQL между двумя значениями даты и получить результат в минутах или секунде? Максимальный размер значения в массиве PHP Класс PHP / pthreads Thread не может использовать массив? Как создавать видео с изображений с помощью php? Как показать / скрыть элементы с помощью PHP и как отправить пользователя на другую страницу

shell whoami не равен php shell_exec whoami?

В оболочке я делаю простой 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.

Это должно быть просто понять.

  • В оболочке вы вошли в систему как пользователь Unix пользователя geoff и это то, что вы получаете.
  • PHP запускается в процессе httpd в Unix, у которого нет nobody в качестве владельца, поэтому это то, что вы получаете, когда вы shell_exec('whoami'); от PHP.

Результат от whoami вы получили, просто означает, что ваш apache работает как nobody . Это так, как должно быть, и я настоятельно рекомендую не изменять это.

Причина, по которой imagemagick не работает, вероятно, напрямую не связана с привилегиями, с которыми выполняется ваш PHP-код. Недостаточно информации для точной диагностики проблемы, но, скорее всего, это ошибка исполняемого файла или поиска в библиотеке. Убедитесь, что бинарные файлы и библиотеки не читаются nobody и что они находятся в местоположении, где apache найдет их. В частности, убедитесь, что $PATH и $LD_LIBRARY_PATH настроены правильно.

  1. добавьте «2> & 1» к вашей команде
  2. укажите полный путь к shell_exec (никто не имеет $ PAHT, поэтому он просто не знает, где хранится образный двоичный файл.
  3. попробуйте запустить скрипт как пользователь на консоли, чтобы увидеть, что это происходит неправильно.