我正在尝试使用 php 在后台执行程序。 c程序是这样的。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
printf("hello\n");
int i =0;
printf("hello world\n");
FILE *fp;
fp = fopen("/home/gianpaolo/workspace/test/outputfile", "w+");
while(i < 60000000) {
fprintf(fp, "hello world\n");
i++;
}
fclose(fp);
}
运行程序的 php 是这样的
<?php
$out = array();
exec('/home/gianpaolo/workspace/test/test 2>&1', $out);
print_r($out);
?>
我正在使用引用此代码的网页触发此代码。如您所见,我正在打印变量 $out 以查看发生了什么,这就是我得到的结果
Array ( [0] => Segmentation fault )
如果我运行任何命令行,它运行良好,但如果我运行它,它就没有任何想法?
---更新--- 我按照建议检查了 fp 是否为 NULL,实际上它是。那么,我如何授予权限以便它可以打开写入或创建写入文件?
最佳答案
检查 fopen
调用的返回值。
我猜想运行网络服务器的用户没有足够的权限来写入(甚至读取)该文件。如果是这种情况,fopen
将返回一个 NULL
指针。
关于后台错误中的php exec c程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823591/