我正在尝试使用 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。 我尝试将文件夹 chown 为 www-data 并 chmoding 为 777 。但我仍然遇到同样的错误。
非常感谢任何有关如何操作的指导:)
检查输出目录的权限,我看到一个$_POST,所以似乎是apache运行了脚本,检查apache是否可以在该目录中写入,并且还覆盖现有的a.out。
如果你检查了权限,权限是777,但还是不行,你可以检查你的系统中是否有apparmor或seLinux活跃。禁用应用程序装甲:
可以通过输入禁用AppArmor并卸载内核模块 以下:
sudo /etc/init.d/apparmor 停止
sudo update-rc.d -f apparmor 删除
重启