后台错误中的php exec c程序

标签 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/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/

相关文章:

c - 如何乘以 TB 大小的数字?

imagemagick 中的图像圈裁剪

visual-studio - 防止 cl.exe 打印已编译的源文件

php - 向 facebook 添加另一个功能,例如 api?

php - mysql返回空集

PHP 自动发送电子邮件不起作用

只计算二维数组中的第一维元素?

定位器的 Php 地址验证

C - 创建子进程

MySQL 命令不适用于 Windows CMD