У меня есть веб-сайт Elgg, работающий на Ubuntu 12.04, который внезапно начал создавать белый экран смерти. Никаких изменений не было внесено ни в какие PHP-файлы, все они работали всего несколько минут назад. Это единственная ошибка, которую я получаю в apache error.log
:
[Thu Jul 23 09:45:49.672038 2015] [:error] [pid 6905] [client 127.0.0.1:53280] PHP Fatal error: Call to undefined function Elgg\\mysql_connect() in /var/www/my-website/engine/classes/Elgg/Database.php on line 144
Apache2 может загружать страницы HTML и PHP, и я могу войти в MySQL из командной строки. Я перезапустил apache2
а также mysql
, PHP, AFAIK, в последней версии. Я перезагрузил компьютер и установил самые последние обновления. На следующей тестовой странице нет ничего необычного для неопытного глаза:
<?php
echo "Test!";
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
phpinfo();
exit();
?>
Эта почта заставляет меня думать, что может быть обновление запустилось и разорвало соединение PHP / mysql, но я не могу этого подтвердить. Проще говоря, я в тупике. Учитывая, что ошибкаundefined function Elgg\\mysql_connect()
Я предполагаю, что что-то пошло не так на уровне конфигурации, но я понятия не имею, как это исправить, и нет никаких твердых предположений относительно того, что могло вызвать это. Что я должен попробовать дальше?
Это, скорее всего, проблема с пространством имен. PHP предполагает, что его собственный mysql api является функцией, объявленной внутри Elgg\
Пространство имен. Итак, перейдите к 'Database.php'
и в строке 144 изменить:
mysql_connect();
в
\mysql_connect();
\
обратная косая черта проинструктирует php, что эта функция существует вне Elgg\
пространство имен или в рамках глобальной области.
Вероятно, вы столкнетесь с похожими проблемами, которые вы должны решить, используя тот же метод, который описан выше.
Других решений пока нет …