Я создал 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, используя ext/mysql PECL Library
Важно отметить, что Wordpress 3.9 или новее поддерживает mysqli
В WordPress 3.9 мы добавили дополнительный слой в WPDB, заставив его переключиться на использование библиотеки PHP mysqli при использовании PHP 5.5 или выше.
PHP 7 полностью удалил mysql_ *.
Вам нужно использовать PDO или mysqli. Wordpress, похоже, не поддерживает это.
mysql_*
были полностью удалены в PHP 7, не только их поддержка, поправьте меня, если я ошибаюсь
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 обрабатывает ошибку соединения
mysql_*
функции просто код я добавлю пример
Убедитесь, что 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 не найден. По крайней мере, в WP 4.4.
В Ubuntu я исправил эту ошибку, запустив
sudo apt-get install php-mysql
И затем перезагрузите мой сервер (caddy, но вы можете использовать apache или nginx).