我在我的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/