php - C execl 执行 PHP 脚本不在 STDOUT 中显示结果

标签 php c

我在使用 C 中完成的守护程序时遇到问题,它读取标准输出 php 内容并将内容保存到文件中。该问题只发生在一个PHP脚本文件上,而另一个则不会。
如果我手动调用脚本,您通常会将内容写入标准输出。

在给出 fork 之后,我正在运行以下代码片段:

void startScriptCollector(char *php , char *collectorName , char *collectorRaw , char *collectorLog){
    char str_script[80];
    char str_raw[80];
    char str_log[80];
    int result = 0;
    int fd_output , fd_error; //File Descriptor

    setreuid(geteuid(), geteuid());

    //stat_rtrim(collectorLog);
    //removeChar(collectorLog,'\n');
    if(collectorLog != NULL) trim(collectorLog);

    tmLogPrintf(Log, TMLOG_LEVEL_ERROR , "On startScriptCollector collectorName : %s , collectorRaw : %s , collectorLog : %s...\n",
            collectorName, collectorRaw , collectorLog);
            //exit(-1);

    sprintf(str_script  , "%s/%s" , SLAVIEW_CUSTOM_SCRIPTS , collectorName);
    sprintf(str_raw     , "%s/%s" , SLAVIEW_CUSTOM_TMPCOL   , collectorRaw);
    sprintf(str_log     , "%s/%s" , VARDIR                  , collectorLog);

    fd_output = open(str_raw, O_CREAT | O_WRONLY , 0777);
    fd_error  = open(str_log, O_CREAT | O_WRONLY , 0777);

    if(fd_output < 0){
            tmLogPrintf(Log, TMLOG_LEVEL_ERROR , "Script %s not could save data in %s...\n",
            collectorName , str_raw);
            exit(-1);
    }

    if(fd_error < 0){
            tmLogPrintf(Log, TMLOG_LEVEL_ERROR , "Script %s not could save error log ...\n",
            collectorName);
            //exit(-1);
    }

    dup2(fd_output , 1); //write on data  file
    dup2(fd_error  , 2); //write on error file

    result = execl(PHPEXEC , "php" , str_script  , NULL);


    if(result == -1){
            tmLogPrintf(Log, TMLOG_LEVEL_ERROR , "Error, on execute script  %s ...", collectorName);
            exit(-1);
    }
}

最佳答案

我发现了您给出错误的原因。这是 PHP 库的相对路径。或者我可以通过 c 或通过 PHP 以编程方式更改路径,一切都会得到修复!然后一个和我一起工作的 friend 添加了在 PHP 上测试的完整路径,脚本运行正常。

关于php - C execl 执行 PHP 脚本不在 STDOUT 中显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747945/

相关文章:

javascript - 带有 WP_Query 的 Ajax Post Filter 仅针对类别触发一次

php - 将上传的图像放在公共(public)文件夹中是否安全?

无法运行 GNU ARM Hello world

c - 暴力破解幻方时出现堆栈溢出错误。有什么可能的解决办法吗?

c - 函数指针参数被忽略/不需要

python - c 指针和 ctypes

PHP语法问题

php - 使用 twig 渲染图像的 VichUploaderBundle 问题

php - 更改我的 sql 查询的小时间隔

c - 创建 pthread 时出现段错误