如何在php中使用exec命令编译和运行c程序?
当我跑的时候如何在php中使用exec命令编译和运行c程序?,php,linux,Php,Linux,当我跑的时候 <?php echo exec('whoami'); ?> 它可以很好地工作,即使对于其他单字命令也是如此 但是对于exec('gcc-oahello.c')它不创建对象文件a 或者当我尝试执行('./a')对于预创建的对象文件,它不会进行任何更改。没有错误,没有通知 任何帮助都是值得感激的 您可以尝试在PHP中使用shell\u exec(): shell_exec('gcc-oahello.c')应该有效基本参考: (适用于大多数其他壳) 使用这些元素,
<?php
echo exec('whoami');
?>
它可以很好地工作,即使对于其他单字命令也是如此
但是对于exec('gcc-oahello.c')代码>它不创建对象文件a
或者当我尝试执行('./a')代码>对于预创建的对象文件,它不会进行任何更改。没有错误,没有通知
任何帮助都是值得感激的 您可以尝试在PHP中使用shell\u exec()
:
shell_exec('gcc-oahello.c')代码>应该有效基本参考:
- (适用于大多数其他壳)
使用这些元素,可以直接获取错误消息:
<?php
exec('gcc -o a hello.c 2>&1', $output, $return_value);
echo ($return_value == 0 ? 'OK' : 'Error: status code ' . $return_value) . PHP_EOL;
echo 'Output: ' . PHP_EOL . implode(PHP_EOL, $output);
最可能的解释是web服务器的用户帐户没有对目录的写访问权限。您可以通过在php中运行whoami
来确定帐户名
exec('whoami', $output);
echo $output[0];
我不知道你将从中得到什么样的输出,但假设它是www-data
,这就是我在Ubuntu上看到的
现在,如果查看web根目录的权限,您可能会发现它由另一个帐户(可能是root)拥有,并且权限是rwxr.xr.x
,因此只有root有权访问
授予www数据写入访问权的一种方法是使其成为所有者:
chown www-data .
或者,您可以将组设置为www数据,并确保该组具有写访问权限
chgrp www-data .
chmod 775 .
最糟糕的情况是,你可以给每个人写访问权限,但我不建议这样做,除非没有其他办法
chmod 777 .
理想情况下,您应该真正创建一个具有写访问权限的单独目录,并将任何输出限制到该目录,而不是更改web根目录上的权限。但是,您可以先从根目录开始,并确保这确实是问题所在,然后再进行大量工作。尝试指定hello.c
和a
的完整路径。这还取决于您是否有权从用户处使用gcc是您的服务器还是web主机?@AleksG:我试过使用exec('gcc-o/opt/lampp/htdocs/a/opt/lampp/htdocs/hello.c');但是没有更改!在错误日志文件中获取信息。您可能有权限限制。没有错误?当然:您正在忽略exec()
的可选参数和返回值,通常会报告错误。您也放弃了stderr。$output和$return\u value的值是多少?对不起?您是想让我猜一下您计算机中的输出是什么吗?
chmod 777 .