collect2:ld在通过php-exec编译时返回1退出状态


collect2: ld returned 1 exit status when compiling through php exec

我正在一个小型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或任何其他用户。