apache — PHP возвращает ошибку 500 в браузере, но не в оболочке

В настоящее время я экспериментирую с плагином PHP под названием Mosquitto PHP (https://github.com/mgdm/Mosquitto-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

Из любопытства я перешел к сценарию в оболочке и запустил его:

sudo php test.php

В результате в моем ssh напечатано «Finished», и оно отправило сообщение через брокера.

Это заставило меня думать, что это странная ошибка разрешения. Исследуя далее, я нашел это в моих журналах:

Мой журнал 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 Интерфейсный модуль FastCGI для Apache 2

и это, то же самое с suexec включен, насколько я могу сказать.

Модуль fcgid уже включен
Модуль suexec уже включен

В небольшом повороте событий я изменил .php на .fcgi и дал ему + x разрешение, и теперь сообщения проходят через брокера, но все равно он выдает ошибку 500 в моем браузере.

Журнал suexec показывает:

[2016-06-07 14:05:58]: uid: (5004 / web1) gid: (5005 / client0) cmd: test.fcgi

и в моем журнале ispconfig это показывает:

[Вторник 07, 14: 08: 25.567945 2016] [fcgid: warn] [pid 27861] (104) Сброс соединения по пиру: [клиент 93.135.88.60:49328] mod_fcgid: ошибка чтения данных с сервера FastCGI
[Вторник 07, 14: 08: 25.568016 2016] [core: error] [pid 27861] [client 93.135.88.60:49328] Конец вывода сценария перед заголовками: test.fcgi

Я полностью потерян для слов здесь .. Мне нужна помощь !!

4

Решение

Попробуйте увеличить память для php-fcgi (по умолчанию для cli memory_limit = -1).

Я думаю, что этот случай должен решить вашу проблему.

ОБНОВИТЬ

Я установил комаров (от php7 ветка) и попробуйте (запустите test.php из примеров репозитория. php 7.0.7). И у меня есть Segfault для

segfault at 8 ip 00005574a41c753f sp 00007ffc2dc85da0 error 6 in php7.0[5574a3f80000+391000]

Кажется, это ошибка расширения.
Вы можете попробовать отладить этот segfault (https://bugs.php.net/bugs-generating-backtrace.php) и отправить отчет разработчикам расширений.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]