使用PHP-FPM时,如何从PHP扩展中捕获输出



我在我的php中加载了一个自定义C扩展名,并且在扩展中,有一个函数可以像这样的事情

void a() {
    printf("abc");
}

我可以在CLI模式(命令行(中毫无问题地调用a(),并按照预期获得输出abc。但是,当我在php-fpm模式下再次尝试在YII项目中尝试时,我无法获得该输出。

我确定的是:

  • 扩展名已加载。
  • 函数调用是成功进行的,没有任何错误。
  • PHP输出缓冲已关闭。我在致电a()之前两次打电话给ob_end_clean(),第一个呼叫返回true和第二个返回的false

所以我的问题是:

我应该在PHP-FPM模式下从扩展中获取输出吗?

如果是这样,我该如何捕获输出,或者请给我一些调试建议。

当PHP以Web服务器模块运行时,STDOUT将重定向到最初启动WebServer进程的终端。在生产服务器上这样的终端不活动,因此您发送到Stdout的任何输出都会丢失。

try php_printf(( printf((一个

大概这篇文章可以帮助您https://devzone.zend.com/317/extension-writing-part-ii-parameters-arreays-arrays-arreays-arsays-and-zvals/

相关内容

  • 没有找到相关文章

最新更新