今天使用阿里云通信号码认证服务PHP-SDK,由于项目太老旧,所以使用了V1.0版本,仅要求PHP5.5起步。
在本地wnmp环境中完成配置后,测试SDK抛出这样的警告:
Warning: curl_setopt_array(): cannot represent a stream of type Output as a STDIO FILE* in E:\MyWeb\ali_dypnsapi\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 59
cURL error 0: The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL...
如图:
大致可以看出,是curl环节出了问题,但更换php.ini中的curl证书,或者修改php.ini中sys_temp_dir路径等,问题都没得到解决。
于是我把sdk上传到几个linux服务器中测试,结果代码均正常运行,这样分析看来,问题可能和系统有关。
于是查阅资料,得到最终的解决方案:
在guzzle设置了option中debug为true的时候,
linux下可以使用fopen('php://output', 'w');
windows下需要将debug设置为 fopen('php://stdout','w'); 或者 fopen('php://stderr', 'w');
在此sdk中,修改vendor/guzzlehttp/guzzle/src/functions.php第92行即可。
php://output 与 php://stderr、php://stdout的差别