Сбой транзакций базы данных 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, я думаю. как я помню, я прочитал аналогичную проблему в другом блоге.