我目前正在试验一个名为Mosquitto (https://github.com/mgdm/Mosquitto-PHP/)的PHP插件。我把它都安装好了,在'php -m‘下面,它似乎显示得很好。
我使用一个小的测试代码来查看它的基本形式是否有效:
<?php
$c = new Mosquitto\Client;
$c->onConnect(function() use ($c) {
$c->publish('mgdm/test', 'Hello', 2);
});
$c->connect('test.mosquitto.org');
for ($i = 0; $i < 100; $i++) {
// Loop around to permit the library to do its work
$c->loop(1);
}
echo "Finished\n";
?>在我的浏览器里似乎又回到了“完成”的状态。因此,我决定升级我的游戏,并添加一个TLS连接,如文档所示:
<?php
$c = new Mosquitto\Client;
$c->onConnect(function() use ($c) {
$c->publish('mgdm/test', 'Hello', 2);
});
$c->setTlsCertificates('mosquitto.org.crt');
$c->connect('test.mosquitto.org', '8883');
for ($i = 0; $i < 100; $i++) {
$c->loop(1);
}
echo "Finished\n";
?>我获得了证书,并确保apache2能够读取它并随后将所有权设置为apache2。结果显示,我的浏览器中出现了500个内部服务器错误。
-rwsrwsrwt 1 www-data www-data 279 Jun 5 04:12 test.php
-rwxrwxrwx 1 www-data www-data 1078 Jun 30 2012 mosquitto.org.crt出于好奇,我在shell中导航到脚本,并使用以下方式运行它:
sudo php test.php这在我的ssh中产生了一个打印的"Finished“,它通过代理发送消息。
这让我觉得这是一种奇怪的权限错误。进一步调查,我在日志中发现了这些:
我的apache2日志:
进程/var/www/php-fcgi-scripts/web1/.php-fcgi-starter(20614)退出(通信错误),收到意外信号11
安装的mog_fcgid是:
Libasache2-mod-fcgid 1:2.3.9-1+b1 amd64 FastCGI接口模块
而且,据我所知,suexec也是启用的。
模块fcgid已启用 模块suexec已启用
在一小部分事件中,我将.php更改为.fcgi并给予它+x权限,现在消息通过代理,但它仍然在我的浏览器中产生了500个错误。
suexec日志显示:
2016-06-07 14:05:58: uid:(5004/web1) gid:(5005/client0) cmd: test.fcgi
在我的ispconfig日志中,它显示:
2016年pid 27861连接重置: client 93.135.88.60:49328 mod_fcgid:从FastCGI服务器读取数据时出错 Tue Jun 07 14:08:25.568016 2016 pid 27861头前脚本输出结束: test.fcgi
我完全迷失在这里..。我需要帮助!!
发布于 2016-06-07 06:08:45
尝试增加php-fcgi的内存(默认情况下cli memory_limit=-1)。
我觉得这个案子应该能解决你的问题。
更新
我已经安装了蚊帐(来自php7分支)并尝试过它(从存储库示例中运行test.php )。( php 7.0.7)我有段话要说
segfault at 8 ip 00005574a41c753f sp 00007ffc2dc85da0 error 6 in php7.0[5574a3f80000+391000]看来这是扩展错误。您可以尝试调试此分段错误(https://bugs.php.net/bugs-generating-backtrace.php)并向扩展开发人员发送报告。
https://stackoverflow.com/questions/37634820
复制相似问题