以前のバージョンのPHPで機能する構成でPHP 7を構築しました。これで、私のWordPress Webサイトにメッセージが表示されます。
PHPインストールには、WordPressで必要なMySQL拡張が欠けているようです。
Mysqliを使用する他のWebサイトは機能します。私は何が欠けていますか?
また、名前にmysqlを含むすべての.soファイルを含めました。
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用に構築されており、それ以降ほとんど追加されていませんが、ほとんどの場合、この古いバージョンとの互換性を維持しているため、コードの保守が少し難しくなります。
それらを元に戻すのに苦労している場合は、 ext/mysql PECL Library を使用して、それらをPHP 7に再び追加できます。
Wordpress 3.9以降ではmysqliがサポートされている に注意することが重要です。
WordPress 3.9では、WPDBに追加のレイヤーを追加し、PHP 5.5以降を使用している場合、mysqli PHPライブラリの使用に切り替えました。
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がPHP7で削除されたMysql拡張機能をまだ使用しているかどうかを確認します。
http://php.net/manual/en/migration70.removed-exts-sapis.php
MysqliおよびPDO拡張機能は保持されました。これが、他のWebサイトが機能している理由です。
この問題は、php 7.1.0-devが原因です。
同じ構成バージョン7.0.0で別のバージョンを作成し、問題は解決しました。
これは、WordPressとは関係ありません。これは、MySQLが見つからないときにMySQLiを自動的に使用しようとするためです。少なくともWP 4.4。