Разрешение PHP Exec отклонено - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь скомпилировать файл с помощью PHP. Код PHP это ...

if(isset($_POST['submit'])){
    $filename= "source/source.c";
    $fp = fopen($filename, "w");
    fwrite($fp, $_POST['answer']);      
    // Now compile...       
    echo system("gcc $filename 2>&1");


}

Я получаю вывод как

/usr/bin/ld: cannot open output file a.out: Permission denied collect2: ld returned 1 exit status 1

Я не знаю, что не так с кодом или разрешениями. Я на Ubuntu 11.04, используя LAMP Stack. Я пробовал подключить папку к www-data и chmoding к 777. Но я все еще получаю ту же ошибку.

Любое руководство о том, что делать, высоко ценится:)

Спасибо уже,

С наилучшими пожеланиями

Аман Гаутам

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Проверьте разрешение выходного каталога, я вижу $ _POST, так что, похоже, apache запустил скрипт, проверил, может ли apache записать в каталог, а также переопределить существующий a.out.

1 голос
/ 02 апреля 2012

Если вы проверили разрешение, и оно 777, но все еще не работает, вы можете проверить, активна ли броня приложений или se Linux в вашей системе. Чтобы отключить броню приложения:

AppArmor можно отключить, а модуль ядра выгрузить, введя следующее:

sudo /etc/init.d/apparmor stop

sudo update-rc.d -f apparmor удалить

перезагрузка

...