web-dev-qa-db-ja.com

コンパイル済みPHP 7 WordPress

以前のバージョンの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
21
user5174817

他で言及されているように、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ライブラリの使用に切り替えました。

7
Machavity

PHP 7はmysql_ *を完全に削除しました。

PDOまたはmysqliを使用する必要があります。 Wordpressはこれをサポートしていないようです。

17
KiwiJuicer

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の例は接続エラーを処理します

8
BRoebie

WordpressがPHP7で削除されたMysql拡張機能をまだ使用しているかどうかを確認します。

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

MysqliおよびPDO拡張機能は保持されました。これが、他のWebサイトが機能している理由です。

3
Bruno Leite

この問題は、php 7.1.0-devが原因です。

同じ構成バージョン7.0.0で別のバージョンを作成し、問題は解決しました。

これは、WordPressとは関係ありません。これは、MySQLが見つからないときにMySQLiを自動的に使用しようとするためです。少なくともWP 4.4。

3
user5174817