0

我正在开发一个在线测试系统,通过它我们可以进行在线编程竞赛。同样,我想使用 , 等函数从 php 脚本调用 C 编译器system()。但是当我使用终端编写它时shell_exec()exec()该函数没有创建 a.out 文件。g++ a.cpp -o a

但这不起作用

system("g++ a.cpp -o a",$as); //a.cpp is inside www folder
4

1 回答 1

2

PHP 以与您不同的用户身份运行,因此可能没有执行g++命令的权限。

要使 PHP 可以访问该命令,请尝试以下操作:

sudo chmod o+x /usr/bin/g++

NB/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
于 2013-09-14T18:55:08.770 回答