Сбой транзакций базы данных PhalconPHP на сервере

Я разработал веб-сайт с использованием PhalconPHP. сайт работает отлично на моем локальном компьютере со следующими характеристиками:

PHP Version 7.0.22
Apache/2.4.18
PhalconPHP 3.3.1

а также на моем предыдущем сервере (с DirectAdmin):

PHP Version 5.6.26
Apache 2
PhalconPHP 3.0.1

Но недавно я перешел на новый VPS. с cPanel:

CENTOS 7.4 vmware [server]
cPanel v68.0.30
PHP Version 5.6.34 (multiple versions available, this one selected by myself)
PhalconPHP 3.2.2

На новом VPS мой сайт всегда дает мне Error 500.

в моем файле журнала ошибок Apache: [cgi:error] End of script output before headers: ea-php70, referer: http://mywebsitedomain.net

Я подозреваю, что это новая система баз данных. новый не является mySql. это MariaDB 10.1. Я попытался перейти на MySQL 5.6, но WHM говорит, что я не могу понизить до более низких версий.

это мой файл конфигурации:

[database]
adapter  = Mysql
host     = localhost
username = root
password = XXXXXXXXXXXX
dbname   = XXXXXXXXXXXX
charset  = utf8

и мои Services.php:

protected function initDb()
{
    $config = $this->get('config')->get('database')->toArray();

    $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter'];
    unset($config['adapter']);

    return new $dbClass($config);
}

А в моих контроллерах... например, этот код вызывает Error 500:

$this->view->files = Patients::query()->orderBy("id ASC")->execute();

но изменение id на fname устраняет проблему:

$this->view->files = Patients::query()->orderBy("fname ASC")->execute();

или даже следующий код вызывает error 500:

$user = Users::findFirst(array(
                         "conditions" => "id = :id:",
                         "bind" => array("id" => $this->session->get("userID"))
                        ));

есть ли проблема с совместимостью PhalconPHP и MariaDB?

Ответ 1

MariaDB был построен, чтобы быть в основном совместимым с клиентами MySQL, и это вряд ли станет причиной ваших проблем. Если вы по-прежнему обеспокоены, вы можете переключиться с MariaDB на MySQL (и наоборот), сбросив (экспортируя) ваши таблицы, переключаясь и импортируя их снова.

Скорее всего, строка ошибки, которую вы показываете, указывает, что ваш новый сервер на самом деле запускает PHP7 (ea-php70), а не PHP5.6, как вы считали, вы выбрали.

Ошибка. End of script output before headers означает, что CGI-скрипт (в данном случае сам PHP7) не вызывал заголовков HTTP перед завершением. Я подозреваю, что ваша версия PhalconPHP несовместима с PHP7 и поэтому просто сбой сразу.

Если cPanel не позволяет вам правильно настроить вашу инфраструктуру, у вас, скорее всего, нет другого выбора, кроме как удалить его и настроить свой стек вручную. Но поскольку вы, вероятно, заплатили за cPanel, вы можете сначала открыть с ними билет поддержки: https://cpanel.com/support/

Ответ 2

Скорее всего, старая версия phalconPHP не поддерживает последнюю версию php 7.x, я думаю. как я помню, я прочитал аналогичную проблему в другом блоге.