shell whoami не равно php shell_exec whoami? - PullRequest
1 голос
/ 21 января 2012

В оболочке я делаю простые whoami и получаю geoff, что хорошо, так как это то, кем я являюсь.

В php-файле у меня есть shell_exec ('whoami');и я никого не получаю.

Мне кажется, это различие, которое могло бы объяснить мою первоначальную проблему: imagemagick работает из оболочки, но не работает из сценария php.

Теперьот работы через этот сайт, я думаю, это означает, что мой apache xampp назначает другое имя пользователя, а не использует мое обычное имя пользователя.

Я пытался изменить свой логин в php с помощью sudo, но это не такПока у меня не работает.

Кто-нибудь может помочь?

Ответы [ 4 ]

2 голосов
/ 21 января 2012

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

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

@ anubhava правильно о том, почему вы получаете два разных ответа при запуске whoami.Однако, если вы пытаетесь преобразовать PDF в PNG с помощью ImageMagick (как в вашем комментарии к вопросу), даже использование полного пути к convert ImageMagick не будет работать, если PATH сценария не содержит путьЕщё и Ghostscript.Не вмешиваясь ни в какие пользовательские пути, вы можете добавить:

putenv("PATH=/usr/local/bin:/usr/bin:/bin");

или что-то подобное в зависимости от ваших настроек.Исполняемый файл gs должен находиться где-то в пути пользователя вашего скрипта, иначе ImageMagick не сможет конвертировать файлы PDF или EPS.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...