Я пытаюсь использовать 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)