proc_open () не работает с 'Permission denied'

Я пытаюсь использовать proc_open() для выполнения программы и печати результатов. Тем не менее, я продолжаю получать «Permission denied». Установите chmod на 0777 для скрипта и исполняемого файла, но безрезультатно.

ini_get('safe_mode') является ложным.

Что может быть неправильным?

Я использую CentOS, Apache и PHP 5.3.3.

У меня была эта проблема с идентичной настройкой, и проблема оказалась SELinux (которая по умолчанию включена), не позволяя httpd выполнять мои внешние программы. Вы можете поместить его в разрешающий режим через,

 setenforce permissive 

Если вы видите ту же проблему, что и я, все должно работать. Это будет продолжаться до перезагрузки.

Чтобы сделать изменение постоянным, перейдите в / etc / selinux / config и измените:

 SELINUX=enforcing 

в

 SELINUX=permissive 

РЕДАКТИРОВАТЬ:

Хорошо, я нашел способ сделать это, что не требует отключения SELinux. Проблема, как я понимаю, заключается в том, что httpd имеет свой собственный домен и не может касаться вещей вне его. Итак, самое простое – переместить свои скрипты / программы в дерево каталогов / var / www.

Если это невозможно, вы можете вместо этого изменить контекст своей программы на месте:

 semanage fcontext -a -t httpd_sys_content_t "/path/to/program(/.*)?" 

который будет в основном сказать, что ваша программа принадлежит httpd.

Вы должны включить safe_mode и посмотреть свой safe_mode_exec_dir. Вы не можете выполнить вне файла safemode exec. Если у вас есть программа ur внутри safe_mode_exec_dir, проблема заключается в вашем общем хостинге (иногда общие хосты отключают функции exec)