PDO prepare () не работает только на одном сервере

0

Следующий код:

class Database {
    (...)
    public function query($query){
        $this->stmt = $this->dbh->prepare($query);
    }
    (...)
}

Ошибка на моем онлайн-сервере со следующей ошибкой:

2018/04/02 15:16:14 [error] 3472#3472: *3 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to a member function prepare() on null in /var/www/html/example.com/public_html/includes/pdodatabaseconnect.php:38
Stack trace:
#0 /var/www/html/example.com/public_html/index.php(52): Database->query('SELECT * FROM s...')
#1 {main}
  thrown in /var/www/html/example.com/public_html/includes/pdodatabaseconnect.php on line 38" while reading response header from upstream, client: XX.XXX.XXX.XXX, server: example.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "example.com"

В то время как тот же самый код, зеркальный, отлично работает на моем локальном сервере. Я не вижу различий PDO введенных в версиях PHP которые могли бы создать этот другой результат. Есть несколько предложений в Интернете для внесения поправок в аналогичные классы, чтобы исправить эту проблему, но это похоже на то, как нанести гвоздь кувалдой. Код работает на другом сервере с зеркальными файлами, а на другом сервере работает другой проект, но тот же файл класса базы данных.

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

Серверы:

локальный (MAMP)

PHP: 7.2.1/MySQL: 5.6.38/nginx: 1.13.2

онлайн (Ubuntu 16.04)

PHP: 7.0.28/MySQL: 5.7.21/nginx: 1.10.3

  • 0
    Ваш $this->dbh равен нулю. Неправильные конфиги?
  • 0
    Одинаковые конфиги nginx на обоих. Я не понимаю, почему это ноль на моем онлайн-сервере, но прекрасно работает на моем локальном сервере.
Показать ещё 1 комментарий
Теги:
nginx

1 ответ

0
Лучший ответ

Хотя глупая вещь, которую следует упускать из виду, ошибка была довольно тупой, указывая на проблему, которая была неправильным паролем базы данных. Я бы оценил ошибку аутентификации.

Тот факт, что я дублировал все файлы и конфиги, означал, что я был слишком уверен в том, что сайты были одинаковыми. Однако у меня была создана база данных с разными учетными записями пользователей.

  • 0
    Пожалуйста, удалите свой вопрос, так как он не может никому помочь в будущем
  • 0
    @Justinas Этот вопрос и ответ очень помог бы мне, пока я изучал проблему? Ответ коррелирует с вопросом, и я не нашел ничего другого, предполагающего, что эта ошибка была проблемой аутентификации mysql. Где мы проводим черту для тех, кто предоставляет полезные вопросы и ответы? Я весьма удивлен вашим предложением.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню