Подтвердить что ты не робот

Скомпилированный 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
4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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 обрабатывает ошибку соединения

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

В Ubuntu я исправил эту ошибку, запустив

sudo apt-get install php-mysql

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

источник