Назад | Перейти на главную страницу

Fedora 15 PHP exec () не работает

Я не могу запустить исполняемый файл функцией PHP exec ().

ОС: Fedora 15

PHP safe_mode выключен

Код PHP:

$exe = "/tmp/defne/./CwCssUGxhjAc";
$result = system( $exe, $retval );

chmod 777 на /tmp/defne и /tmp/defne/CwCssUGxhjAc

Я могу запустить его в командной строке:

sudo -u apache /tmp/defne/CwCssUGxhjAc

PHP дает apache, когда я вызываю whoami через скрипт PHP.

Я могу запускать другие исполняемые файлы, такие как gcc, whoami и т. Д., Через PHP. Но я не могу запустить скомпилированный двоичный код C / C ++.

В журнале ошибок apache говорится:

sh: /tmp/defne/./CwCssUGxhjAc permission denied

Selinux включен.

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

SELinux почти наверняка мешает Apache выполнять что-либо в /tmp. Вы можете убедиться в этом, проверив /var/log/audit/audit.log.

Простое решение - переместить двоичный файл в стандартное место для исполняемых файлов; /usr/local/bin вероятно, наиболее уместно.

В качестве альтернативы вы можете применить соответствующий контекст файла (bin_t) в двоичный:

sudo semanage fcontext -a -t bin_t /tmp/defne/CwCssUGxhjAc
sudo restorecon -v /tmp/defne/CwCssUGxhjAc