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

时间:2014-10-29 05:40:56

标签: php exec

我正在开发一个小型的php-mysql项目,并在Ubuntu 12.04.1中新安装的Apache / 2.2.22服务器(Ubuntu)上的/ var / www / project中工作

我已经递归地将/ var / www文件夹放入[ed]以赋予www-data所有权。在项目内部我有一个试图执行 exec('gcc sample.c')的php文件,但是我收到错误说 collect2:ld返回1退出状态。我做通过终端执行此操作时不会出现此错误。

此外,当 exec('gcc sample.c')替换为 exec('。/ a.out'时,放在同一文件夹中的可执行文件a.out运行正常)

我该如何解决这个问题? PS:我是初学者。

项目中的

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;
}

1 个答案:

答案 0 :(得分:1)

这实际上是因为无权创建 .out 文件。可能是当您通过终端编译或运行它时,您将拥有足够的权限来执行此操作,并且您可能已从c文件所在的文件夹中运行。请通过许可检查。 请记住,当您运行php文件时,用户 www-data 不是root用户或其他任何用户。