Я разработал веб-сайт с помощью 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?
«Ищу ответ из заслуживающих доверия и / или официальных источников». не считается ли запрос на внешний ресурс явно не по теме? Разве отсутствие минимальный воспроизводимый пример не считается не по теме? В любом случае переключите БД на своем компьютере, чтобы проверить, является ли это причиной того, что ваш код не работает.
Вы проверили свой файл .htaccess?






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/
@DevMoutarde Да, но на сервере есть более старая версия PhalconPHP.
@Cobra_Fast Спасибо за ответ. что странно, так это то, что фалкон, кажется, работает, если я удалю все коды, связанные с базой данных. пример приложения invo работает нормально, что показывает, что расширение загружено и работает. но когда я выполняю некоторые запросы к базе данных, эта проблема возникает, и только когда я запрашиваю целочисленное поле.
@Agha Ну, тогда попробуйте переключиться на MySQL и посмотрите, решит ли это вашу проблему.
Скорее всего, старая версия phalconPHP не поддерживает последнюю версию php 7.x, я думаю. насколько я помню, я прочитал аналогичную проблему в другом вопросе блога.
Вы не регистрируете сообщения об ошибках? «Ошибка 500» не помогает.