Как это работает на терминале, а не на apache
затем файл сервера Apache php.ini
можно отключить использование shell_exec()
.
См http://www.php.net/manual/en/ini.core.php#ini.disable-functions
php.ini
файл вашего сервера Apache может выглядеть как
disable_functions=exec,passthru,shell_exec,system,proc_open,popen
Удалить shell_exec
из этого списка и перезапустить веб-сервер, хотя это представляет собой угрозу безопасности, и я не рекомендую.
В обычных функциях, таких как exec
, shell_exec
и system
, всегда используются для выполнения внешних программ. Также можно выполнить команду оболочки. Если эти две функции включены, пользователь может ввести любую команду в качестве входного и выполняемого на ваш сервер. Поэтому обычно люди отключаются в конфигурации apache как disable_functions
для обеспечения безопасности своего сайта.
Это работает для меня - Вот тестовый прогон
тест Sample c
код
[[email protected] tmp]$ cat test.c
#include<stdio.h>
int main(int args, char *argv[]) {
int i = 0;
for (i = 0; i < args; i++)
printf("Arg[%d] = %s\n",i, argv[i]);
return 0;
}
Compile
[[email protected] tmp]$ gcc test.c
Образец php
сценарий
[[email protected] tmp]$ cat test.php
<?php
$query = "/tmp/./a.out /var/www/project/constraints.txt /var/www/project/constraints_keyword.txt /var/www/project/FIB.txt /var/www/project/ANS.txt";
$var = shell_exec($query);
echo $var;
?>
Исполнение и выход
[[email protected] tmp]$ php test.php
Arg[0] = /tmp/./a.out
Arg[1] = /var/www/project/constraints.txt
Arg[2] = /var/www/project/constraints_keyword.txt
Arg[3] = /var/www/project/FIB.txt
Arg[4] = /var/www/project/ANS.txt
Добро пожаловать на переполнение стека! Сначала вы можете взять [тур] и узнать [спросить] хороший вопрос и создать [mcve]. Это облегчает нам помощь. – Katie
Atleast показать нам, что вы сделали до сих пор? –
попробуйте указать аргументы: http://stackoverflow.com/a/16932201/454827 – ZiTAL