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. Я также могу отключить питание моего компьютера.

1 ответ

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
Другие вопросы по тегам