XoopsX / legacy

XOOPS Cube Legacy base repository
15 stars 11 forks source link

php7.1でのインストール #82

Open yuichimita opened 6 years ago

yuichimita commented 6 years ago

こちらでよいかわかりませんが、対応いただけると助かります。

インストーラでエラーが出て完了できません。

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP

Step 1はエラーが出ても、完了することができました。 Step 2は、進めませんでした。 phpは7.1です。

よろしくお願いします。

nao-pon commented 6 years ago

@yuichimita Deprecated エラーそのものでは処理が止まることはありません。私は PHP 7.2.0 RC1 + MySQL 5.5.55 でインストールテストを行ってみました。ご指摘のエラーメッセージは出ましたが、処理は止まることなく正常にインストールは完了しました。

MySQL が 5.7 からデフォルトの動作がかなり変わっているようですのでそのあたりが原因かもしれません。

html/class/database/mysqlidatabase.php の 100行目あたりに

        // set sql_mode to '' for backward compatibility
        if (version_compare(mysqli_get_server_info($this->conn), '5.6', '>=')) {
            mysqli_query($this->conn, 'SET SESSION sql_mode = \'\'');
        }

を挿入して connect() 関数を

    public function connect($selectdb = true)
    {
        $this->conn = mysqli_init();

        if (!$this->conn) {
            $this->logger->addQuery('', $this->error(), $this->errno());
            return false;
        }

        if (XOOPS_DB_PCONNECT == 1 && version_compare(PHP_VERSION, '5.3.0', '>=')) {
            mysqli_real_connect($this->conn, 'p:'.XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS, null, null, null, MYSQLI_CLIENT_FOUND_ROWS);
        } else {
            mysqli_real_connect($this->conn, XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS, null, null, null, MYSQLI_CLIENT_FOUND_ROWS);
        }

        if ($selectdb != false) {
            if (!mysqli_select_db($this->conn, XOOPS_DB_NAME)) {
                $this->logger->addQuery('', $this->error(), $this->errno());
                return false;
            }
        }

        // set sql_mode to '' for backward compatibility
        if (version_compare(mysqli_get_server_info($this->conn), '5.6', '>=')) {
            mysqli_query($this->conn, 'SET SESSION sql_mode = \'\'');
        }

        return true;
    }

とすると結果は変わりますでしょうか?

yuichimita commented 6 years ago

サジェスチョンありがとうございます。 残念ながら、状況は変わりませんでした。

Step 2で、同じエラー表示が多数出て、進めませんでした。

環境の記述が不十分だったかもしれません。 データベースサーバは、MySQLではなく、MariaDBを使っております。

また、ウェブサーバは、Nginxです。

yuichimita commented 6 years ago

エラーが出たファイルの該当箇所のclassと同じ名称のfunctionを"__construct"で置換すると、エラーは消えました。ただし、画面が真っ白になってしまいました。

こちらを参考にしました。 【PHPエラーの対処方法】Methods with the same name as their class will not be constructors in – Lapinlop https://lapinlop.com/blog/php7error-deprecated/

引き続き、情報ありましたら、よろしくお願いします。

kujiy commented 6 years ago

ちょっと話がずれてしまうんですがxoopsってnginx対応してるんでしょうか。picoで.htaccessとか使われてたような…一部モジュールだけなのかな。関係なかったらスミマセン