Сбой транзакции базы данных 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?

Вы не регистрируете сообщения об ошибках? «Ошибка 500» не помогает.

Paul Spiegel 19.03.2018 12:28

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

Ulrich Eckhardt 25.03.2018 10:36

Вы проверили свой файл .htaccess?

Stefan Avramovic 25.03.2018 14:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
12
3
404
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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 18.03.2018 15:48

@Cobra_Fast Спасибо за ответ. что странно, так это то, что фалкон, кажется, работает, если я удалю все коды, связанные с базой данных. пример приложения invo работает нормально, что показывает, что расширение загружено и работает. но когда я выполняю некоторые запросы к базе данных, эта проблема возникает, и только когда я запрашиваю целочисленное поле.

Agha 18.03.2018 15:57

@Agha Ну, тогда попробуйте переключиться на MySQL и посмотрите, решит ли это вашу проблему.

Cobra_Fast 18.03.2018 16:01

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

Другие вопросы по теме