我的 page.php 文件现在看起来像这样:
<?php
$cmd = './foo < input.txt > output.txt';
$result = shell_exec($cmd);
echo system('date'); //just to see change when refreshing the page
?>
每当我在 shell 中键入相同的命令时,它都能完美运行(带有示例输入的 input.txt 文件已准备就绪)。
我的想法是使用 php 创建一个接口(interface)来与 input.txt 文件通信,然后与 output.txt 文件通信以将结果返回到页面上。 但是,首先,我需要确保我可以运行我的程序。
我编译过
gcc -Wall -o foo foo.c
foo 可执行文件与 page.php 位于同一目录中。
我已尝试对所有文件(page.php、input.txt 和 foo)设置 777 权限
网站已启动并正在运行,当我刷新页面时日期发生变化,但目录中没有 output.txt。
我试过了
$cmd = 'ls -la';
$result = shell_exec($cmd);
echo $result;
它按预期工作,显示正确目录的内容。
最佳答案
可能导致此类问题的一件事是,如果 Apache 没有对 output.txt 应该所在的 目录 的写入权限。执行 ls -l ../
以查看您是否确实拥有必要的权限。我还会附和出结果,因为这可能会让您对正在发生的事情有更多的了解。
关于php - linux下通过PHP网页运行C编译程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875259/