我目前正在尝试一个名为Mosquitto PHP(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";
?>
这似乎回归&#34;完成&#34;在我的浏览器中。所以,我决定开始我的游戏,并在文档中添加一个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
这导致印刷的&#34;成品&#34;在我的ssh中,它通过代理发送消息。
这让我觉得这是一种奇怪的许可错误。进一步调查,我在我的日志中找到了这些:
我的apache2日志:
mod_fcgid:进程/var/www/php-fcgi-scripts/web1/.php-fcgi-starter(20614)退出(通信错误),得到意外信号11
安装的mog_fcgid是:
libapache2-mod-fcgid 1:2.3.9-1 + b1 amd64用于Apache 2的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日志中显示:
[Tue Jun 07 14:08:25.567945 2016] [fcgid:warn] [pid 27861](104)通过对等方重置连接:[client 93.135.88.60:49328] mod_fcgid:从FastCGI服务器读取数据时出错
[Tue Jun 07 14:08:25.568016 2016] [core:error] [pid 27861] [client 93.135.88.60:49328]标题前面的脚本输出结束:test.fcgi
我在这里完全不知所措......我需要帮助!!
答案 0 :(得分:3)
尝试增加php-fcgi的内存(默认情况下为cli memory_limit = -1)。
我认为此案例可以解决您的问题。
<强>更新强>
我已经安装了mosquitto(来自 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)并将报告发送给扩展开发人员。