我正在一个小型php-mysql项目中工作,并在Ubuntu 12.04.1 中新安装的Apache/2.2.22服务器(Ubuntu)上的/var/www/项目中工作
我已经递归地chown[ed]/var/www文件夹,赋予www数据所有权。在项目内部,我有一个php文件,试图执行exec('ccc sample.c'),但我收到一个错误,说collect2:ld返回了1个退出状态。我通过终端执行时没有收到这个错误。
此外,当exec('cc-sample.c')被Executi('./a.out')TR替换时,放在同一文件夹中的可执行文件a.out运行良好
我该怎么解决这个问题?附言:我在这方面完全是个初学者。
项目内部的php代码:
<?php
require('connect.php');
$path='sample.c';
chmod($path,0777);
$command= 'gcc sample.c 2>&1';
$method = exec($command);
print_r($method);
?>
sample.c代码:
#include<stdio.h>
int main()
{
printf("SUCCESS'n");
return 0;
}
这实际上是因为没有创建.out文件的权限。可能是当您通过终端编译或运行它时,您将有足够的权限这样做,并且您可能已经从c文件所在的文件夹中运行了它。请检查权限。请记住,当您运行php文件时,用户是www数据而不是root或任何其他用户。