Вопрос или проблема
Я обновил PHP до версии 7.4, и согласно phpinfo() работающая версия mysqli следующая:
Версия библиотеки клиентского API mysqlnd 7.4.0
Но страницы PHP не подключаются. MySQL сервер работает, так как я могу получить к нему доступ через свой клиент на компьютере, но с PHP он не работает. Если я запускаю это в терминале, он все еще показывает 7.3:
sudo apt show php -a
Пакет: php
Версия: 2:7.3+70+ubuntu19.10.1+deb.sury.org+6
Приоритет: необязательный
Раздел: php
Источник: php-defaults (70+ubuntu19.10.1+deb.sury.org+6)
Ответственный: Поддержка PHP от Debian <[email protected]>
Установленный размер: 12.3 кБ
Зависит: php7.3
Размер загрузки: 6,088 Б
APT-источники: http://ppa.launchpad.net/ondrej/php/ubuntu eoan/main amd64 Packages
Описание: язык сценариев с поддержкой HTML на стороне сервера (по умолчанию)
PHP (рекурсивная аббревиатура для PHP: Hypertext Preprocessor) - широко используемый
язык сценариев общего назначения с открытым исходным кодом, особенно подходящий
для веб-разработки и может быть встроен в HTML.
.
Этот пакет является зависимостным пакетом, который зависит от последней стабильной
версии PHP (в настоящее время 7.3).
. . . но с ключом -a также показывается, что версия 7.4 установлена и является последней стабильной версией!
Существует только папка PHP 7.4, поэтому более старые версии не установлены, но если я запущу sudo apt-get install php-mysql, он пытается установить поддержку для 7.3, а если я запущу apt install php7.4-mysql, он говорит мне, что последняя версия, 7.4.1, уже установлена. Что происходит и почему есть ссылки на 7.3?
PHP 7.3 был отключен с помощью sudo a2dismod php7.3, а 7.4 включен с помощью sudo a2enmod php7.4, поэтому я не могу понять, что происходит или откуда он даже получает информацию о 7.3.
Попробуйте установить расширение PHP MySQL с помощью следующей команды:
apt install php7.4-mysql
Ответ или решение
Проблема подключения PHP 7.4 к MySQL
После обновления до PHP 7.4 вы столкнулись с проблемой подключения к MySQL, несмотря на то, что версия mysqli указана как «mysqlnd 7.4.0». Вместе с тем, в терминале отображается информация о PHP 7.3, что может вызывать путаницу при работе с вашим веб-приложением. Давайте разберем возможные причины возникшей ситуации и пути её решения.
1. Проверка установленных версий PHP
Поскольку вы упоминаете, что при выполнении команды sudo apt show php -a
у вас наблюдается версия 7.3, это говорит о том, что у вас установлены разные версии PHP. Вы можете проверить, какие версии PHP у вас действительно установлены, выполнив команду:
dpkg -l | grep php
2. Установка расширения MySQL для PHP 7.4
Хотя вы установили php7.4-mysql
, убедитесь, что оно активировано. Используйте следующие команды для проверки и активации:
sudo apt-get install php7.4-mysql
Если вы получите сообщение, что пакет уже установлен, убедитесь, что расширение действительно активно. Вы можете проверить это через phpinfo()
на своем сервере.
3. Обновление конфигурации Apache
После активации модуля PHP 7.4 и отключения 7.3, необходимо перезапустить Apache для применения изменений:
sudo systemctl restart apache2
4. Проверка конфигурации Apache
Убедитесь, что в конфигурации Apache указано использование PHP 7.4. Проверьте файл конфигурации виртуального хоста. Обычно он находится в /etc/apache2/sites-available/000-default.conf
или в другом файле, который вы создавали для своего сайта. Убедитесь, что строки, указывающие на PHP, выглядят следующим образом:
<IfModule mod_php7.4.c>
AddType application/x-httpd-php .php
</IfModule>
5. Состояние MySQL
Убедитесь, что MySQL сервер действительно работает. Для этого выполните следующую команду:
systemctl status mysql
Если сервер недоступен, вы можете попробовать перезапустить его:
sudo systemctl restart mysql
6. Проверка подключения к MySQL
При программировании не забудьте проверить настройки подключения к MySQL, такие как хост (обычно это localhost
), имя пользователя и пароль. Следующий код поможет вам проверить подключение:
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Ошибка подключения: " . $mysqli->connect_error);
}
echo "Успешное подключение к MySQL!";
7. Отладка ошибок
Если проблема сохраняется, включите отображение ошибок в php.ini, установив следующие параметры:
display_errors = On
error_reporting = E_ALL
Это поможет вам увидеть любые ошибки, связанные с подключением к базе данных.
Заключение
Важными шагами для решения вашей проблемы являются проверка установленных версий PHP, активация и настройка необходимых расширений, а также правильная конфигурация вашего веб-сервера. Если выполненные шаги не приводят к результату, может потребоваться более глубокая диагностика конфигурации вашего сервера или логов ошибок.