我正在尝试使用php编译并运行本地存储在我的计算机中的C文件 我使用了以下代码
$dir = '/home/User/Desktop';
if ( !file_exists($dir) ) {
mkdir ($dir, 0744);
}
file_put_contents ($dir.'/test.c', $code);
$path = "/home/User/Desktop/test.c";
$Command = "gcc $path 2&>1";
exec($Command,$return_val,$error);
我已使用chmod和chgrp为文件设置了所有权限 但在执行它时,我的屏幕上只回声“成功”而不是我的$输出值 这是我在
中输入的示例C程序#include <stdio.h>
int main()
{
printf("Hello world");
return 0;
}
但是当我使用GCC执行它时,以下程序运行正常 我目前正在使用Ubuntu 14.04.2 LTS
我尝试使用
$Command = "gcc $path 2&>1"; $output = exec($Command); $output = exec(./a.out);
但仍然无法获得所需的输出
我尝试使用
$output = exec($Command,$return_val,$error);
现在,当我回显$ error时,它给了我“2”
我尝试使用系统
$last_line = system('gcc $path', $retval);
echo '
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
我得到以下输出
Last line of the output:
Return value: 4
sh: 1: cannot create 1: Permission denied
gcc: error: 2: No such file or directory
但是我使用
授予了该文件的权限 sudo chmod g+w /home/User/Desktop/test.c
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
不是2>&1
,而是sh: 1: cannot create 1: Permission denied
gcc: error: 2: No such file or directory
。
@interface
您在此处看到的第一个错误是shell抱怨无法创建名为“1”的文件来重定向标准输出。
第二个错误是gcc抱怨缺少名为“2”的输入文件。