我正在开发一个在线测试系统,通过它我们可以进行在线编程竞赛。
对于同样的我想使用像system()
,shell_exec()
,exec()
等函数从PHP脚本调用C编译器。但该函数不创建a.out文件
当我用终端写g++ a.cpp -o a
时它起作用了。
但这不起作用
system("g++ a.cpp -o a",$as); //a.cpp is inside www folder
答案 0 :(得分:2)
PHP以不同的用户身份运行,因此可能无权执行g++
命令。
要使PHP可以访问该命令,请尝试以下操作:
sudo chmod o+x /usr/bin/g++
N.B。 /usr/bin/g++
有时可能是同一目录中另一个可执行文件的符号链接,因此更改其权限将不会执行任何操作(默认情况下符号链接为777)。如果上述命令无法解决问题,您可以将此命令的输出添加到您的问题中,该问题将显示它指向的位置:
ls -al /usr/bin/g++
在我的系统上,输出
lrwxrwxrwx 1 root root 7 2011-08-10 14:52 /usr/bin/g++ -> g++-4.5
这意味着g++
基本上是g++-4.5
的别名,因此我会在g++-4.5
上允许“其他”执行权限:
sudo chmod o+x /usr/bin/g++-4.5