php вызов c ++ функция-причина вызывает ошибка "Отказано в доступе" - PullRequest
2 голосов
/ 09 марта 2011

У меня есть php-код:

<?php
$res = "";
exec("./a.out>temp", $res);
print_r(error_get_last());
print_r($res);
?>

a.out - простая программа на С ++, создающая сокет.когда я вызываю этот php-код из браузера, в «временном» файле выводится ошибка «Отказано в доступе».

Я знаю, что это проблема, связанная с правами пользователя apache, но как ее решить?

Примечание: я перенаправил stderr в файл "temp", чтобы увидеть, что не так.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Возможно, проблемы с правами доступа пользователей 'www' (или apache).

Другой вариант - сокет уже существует. .

Возможно, это проблема SE SE Linux (если вы используете Linux)

/usr/sbin/setsebool httpd_can_network_connect=1

Источник: http://www.rkrishardy.com/2009/12/permission-denied-13-when-opening-socket-in-php-apache/

Кстати, php также может делать сокеты. .

1 голос
/ 09 марта 2011

Измените вашего пользователя на того, который выполняет ваш apache. Например, как это:

su www-data

А затем снова выполните команду.

1 голос
/ 09 марта 2011

Попробуйте это

chmod 755 a.out
chmod 666 temp
...