我正在开发一个在线测试系统,我们可以通过它进行在线编程竞赛。
同样,我想使用 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
最佳答案
PHP 以与您不同的用户身份运行,因此可能没有执行 g++
命令的权限。
要使 PHP 可以访问该命令,请尝试以下操作:
sudo chmod o+x /usr/bin/g++
注意/usr/bin/g++
有时可以是指向同一目录中另一个可执行文件的符号链接(symbolic link),因此更改其权限不会执行任何操作(默认情况下符号链接(symbolic link)为 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
关于php - 如何在ubuntu中使用php脚本编译c程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805294/