我正在尝试使用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
我不知道代码或权限有什么问题。我使用LAMP Stack在Ubuntu 11.04上。 我已经尝试将文件夹chown到www-data并chmoding到777。但我仍然得到同样的错误。
高度赞赏任何有关做什么的指导:)
非常感谢,
最好的问候
Aman Gautam
答案 0 :(得分:2)
检查输出目录的权限,我看到$ _POST,所以看起来是运行脚本的apache,检查apache是否可以在目录中写入,还覆盖现有的a.out。
答案 1 :(得分:1)
如果您已经检查了权限并且它是777,但仍然无法正常工作,您可以检查系统中是否有app armor或se Linux处于活动状态。要禁用app armor:
可以禁用AppArmor,并通过输入卸载内核模块 以下内容:
sudo /etc/init.d/apparmor stop
sudo update-rc.d -f apparmor remove
重新启动