php - 如何从 C 运行一些 PHP 代码

标签 php c linux

<分区>

我有下面的代码可以正常工作。

  FILE *pipe_fp;
  if((pipe_fp = popen("php", "w")) == NULL) {
    perror("popen(PHP)");
    exit(1);
  }

  fputs("<?php echo process('xx'); ?>", pipe_fp);
  int ret = pclose(pipe_fp);
  if(WIFEXITED(ret))
    printf("%d\n", WEXITSTATUS(ret));

问题是当我尝试这样的事情时:

// up to this point i am starting a socket servers and wait for clients
int bSize;
int nSize;
char buffer[MAXBUF+1];
char receive[MAXBUF+1];
while(1) {
  bSize = recv(new_fd, buffer, MAXBUF, 0);
  if(bSize > 0) {
    buffer[bSize] = '\0';
    strcat(receive, buffer);
  }
}

// I rote this part based on this post: http://stackoverflow.com/questions/1383649/concatenating-strings-in-c-which-method-is-more-efficient
char * first= "<?php echo process('";
char * second = "'); ?>";
char * code = NULL;
asprintf(&code, "%s%s%s", first, receive, second);

// the above code somes here, i just copied the part that has changed
fputs(code, pipe_fp);

我尝试了很多其他示例,但均以失败告终。 我在 C 区出生 3 天。

最佳答案

不使用临时文件,您可以启动 php 进程并将脚本传递给标准输入,从标准输出获取结果。

关于php - 如何从 C 运行一些 PHP 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12744301/

相关文章:

php - 如何检测和调试陈旧的缓存条目?

php - 是否可以将变量值添加到选择查询结果 php pdo

char * 作为 C 中的引用

C - Fclose -> 中止(核心转储)

php - 用户通知

php - 将值传递到灯箱

c - 二维数组结构出现段错误

linux - ARM 上的休眠 Linux

linux - 内核态上下文切换时如何保持原子性?

linux - 如何停止、重启或查看启动应用程序的控制台日志?