php exec c程序在后台出错
我正在尝试使用php在后台执行一个程序。c程序就是这样php exec c程序在后台出错,php,c,command-line,background,exec,Php,C,Command Line,Background,Exec,我正在尝试使用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/outputfil
#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);
}
如果我运行任何命令行,它工作得很好,但如果我运行它,它不会有任何想法
---更新---
我按照建议检查fp是否为空,事实上它是空的。那么,我如何授予权限,使其可以打开以写入或创建以写入文件?当fp从fopen返回时,您是否检查了fp是否为空?如上所述: 如果文件已成功删除 打开该函数将返回一个 指向所使用的文件对象的指针 要进一步识别所有数据流,请执行以下操作: 涉及it的业务否则,一个 返回空指针。
这几乎可以肯定是因为两件事
fp
为空)fwrite
调用中使用NULL
指针,在fwrite
调用中取消引用NULL
指针会导致segfault
简而言之,请记住,您的web服务器不是以与您具有相同权限的同一用户的身份运行的
编辑:您需要使用
chmod
shell命令将目录的读写权限授予“其他”(除非你不想让任何人在那里写,只要www数据,在这种情况下你还需要使用chown
。严格地说,问题的这一部分将继续存在,或者检查fopen
调用的返回值
我猜运行Web服务器的用户没有足够的权限进行写入(甚至读取)文件。如果是这种情况,
fopen
将返回一个NULL
指针。我想到了它,但正如你在c代码中看到的,在fopen之前有一个printf没有输出。我检查了fp是否为NULL,事实上是。现在有没有办法授予打开/创建文件的权限你是对的,有没有办法授予权限是否可以打开/创建文件?man chmod
应该足以让您获得所需的权限。查看chmod或chown以获得权限。
<?php
$out = array();
exec('/home/gianpaolo/workspace/test/test 2>&1', $out);
print_r($out);
?>
Array ( [0] => Segmentation fault )