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

19

Я создал 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
  • 0
    Вполне может быть поток пользователей Wordpress, сталкивающихся с подобными проблемами. Может ли этот вопрос и ответ стать общим уловом для всех?
  • 1
    Отличный вопрос, кстати, это может помочь будущим людям, которые не понимают, что расширение было удалено в PHP 7.0
Теги:
pdo

6 ответов

7
Лучший ответ

Как уже упоминалось в другом месте, функции 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 или выше.

  • 0
    Я нашел этот пост полезным для добавления расширения mysql обратно в PHP 7: ckon.wordpress.com/2015/08/06/…
  • 1
    @phansen Все, что я могу сказать, это невероятно плохая идея. Миграция на PDO или MySQL. Прыжки через обручи для восстановления устаревшей функциональности редко бывают хорошей идеей.
16

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

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

  • 0
    mysql_* были полностью удалены в PHP 7, не только их поддержка, поправьте меня, если я ошибаюсь
  • 0
    Это то, что я имел в виду.
Показать ещё 4 комментария
9

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

  • 1
    Как я могу это сделать? Быстрый Google не показывает какие-то настройки, чтобы изменить его.
  • 0
    нет это mysqli так же, как mysql_* функции просто код я добавлю пример
Показать ещё 5 комментариев
4

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

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

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

2

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

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

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

  • 0
    ... и если вы не используете последнюю версию WordPress, вам следует - из-за проблем безопасности в предыдущих версиях. Существует причина , почему WordPress постоянно совершенствуется :-)
-1

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

sudo apt-get install php-mysql

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

источник

Ещё вопросы

Сообщество Overcoder
Наверх
Меню