Скомпилированный PHP 7 отсутствует расширение mysql в WordPress

Я создал PHP 7 с конфигурацией, которая работала для предыдущей версии PHP. Теперь мои веб-сайты WordPress получают сообщение:

Кажется, что в вашей установке PHP отсутствует расширение MySQL, которое требуется WordPress.

Другие сайты, использующие mysqli, работают. Что мне не хватает?

Я также включил все .so-файлы с mysql в имени:

extension=dba.so extension=mysql.so extension=mysqli.so extension=mysqlnd_mysql.so extension=mysqlnd_mysqli.so extension=mysqlnd.so extension=pdo.so extension=pdo_mysql.so extension=pdo_odbc.so extension=odbc.so 

Как уже упоминалось в другом месте, функции ext/mysql были удалены. Мы говорили об этом в течение некоторого времени .

ext / mysql был создан для MySQL 3.23 и с тех пор получил очень мало дополнений, в то же время сохраняя совместимость с этой старой версией, что делает код немного сложнее в обслуживании.

Если вы хотите положить их обратно, вы можете добавить их обратно в PHP 7, используя библиотеку PECL для ext / mysql

Важно отметить, что WordPress 3.9 или новее поддерживает mysqli

В WordPress 3.9 мы добавили дополнительный уровень в WPDB, в результате чего он переключился на использование библиотеки PHP mysqli при использовании PHP 5.5 или выше.

PHP 7 полностью удалил mysql_ *.

Вам нужно использовать PDO или mysqli. WordPress, похоже, не поддерживает это.

mysql_* функции, удаленные в PHP 7.0, обновляют ваш код до mysqli или PDO

Также обратите внимание на подготовленные заявления, если вы обрабатываете ввод пользователя. Чтобы уменьшить вероятность инъекций SQL

Пример строки подключения mysqli:

 <?php $mysqli = new mysqli("localhost", "user", "password", "database"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } ?> 

Пример строки подключения pdo:

 <?php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); ?> 

Заметка:

Этот пример mysqli обрабатывает ошибку подключения

Убедитесь, что WordPress все еще использует расширение Mysql, которое было удалено в PHP7.

http://php.net/manual/en/migration70.removed-exts-sapis.php

Расширения Mysqli и PDO были сохранены. Именно по этой причине ваши другие веб-сайты работают.

Эта проблема вызвана php 7.1.0-dev.

Я построил еще один вариант с той же конфигурационной версией 7.0.0, и проблема была решена.

Это не имеет ничего общего с WordPress, поскольку он автоматически попытается использовать MySQLi, если MySQL не найден. По крайней мере, в РГ 4.4.

На Ubuntu я исправил эту ошибку, выполнив

 sudo apt-get install php-mysql 

А затем перезагрузите мой сервер (caddy, но вы можете использовать apache или nginx).

источник