PHP не может выполнить какую-либо внешнюю команду? - PullRequest
1 голос
/ 01 декабря 2010

Мы перешли со Slackware на CentOS, здесь все работало нормально, без уведомления php прекратил выполнять внешние вызовы, такие как вызовы "wc" и "spamc". Все такие вызовы появляются в error_log как:

sh: / usr / bin / spamc: в доступе отказано

Пути верны. У нас правильно установлены разрешения, и Apache должен без проблем выполнять файлы. Мы НЕ в safe_mode, и у нас не установлено base_dir. Это не SELinux, или, по крайней мере, sestatus говорит, что SELinux отключен.

Резюме:

  • PHP не может выполнить что-либо через exec () или popen ()
  • Пути к двоичным файлам верны.
  • Мы не в безопасном режиме
  • У нас нет набора base_dir
  • Разрешения на двоичные файлы позволяют пользователю apache их запускать
  • SELinux отключен
  • disable_functions в php.ini пусто
  • Мы понятия не имеем, почему это не работает

PHP версии 5.3.3 и CentOS 5.5

Кто-нибудь знает, что может происходить? Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 01 декабря 2010

SELinux блокирует ваши попытки их запустить. Я рекомендую вам придумать правила, которые позволяют вам запускать подмножество необходимых внешних команд и загружать их как модуль.

1 голос
/ 01 декабря 2010

Найдена ошибка.

Я пытался выполнить / usr / bin / tidy, например, папка usr имела разрешение 644, что сродни любовному ужасу в моей книге. Я мог работать, потому что я был root.

Я понял это после того, как сошел с ума и решил проверить разрешения для всех компонентов пути команды от корня / папки до двоичного файла tidy, я обнаружил, что все права доступа установлены правильно, но perms для папки usr были полностью сбиты. 1005 *

Это исправлено.

0 голосов
/ 01 декабря 2010

https://serverfault.com/questions/207989/php-cant-execute-any-external-command/208001#208001

Обычно PHP на centOS запускается как никто, если вы не скомпилировали php как fastcgi, dso и т.д ...

0 голосов
/ 01 декабря 2010

PHP работает как Apache на сервере? Я думал, что это бежит как никто ..

...