Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
yuichimita opened this issue Oct 5, 2017 · 4 comments
Open

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

yuichimita opened this issue Oct 5, 2017 · 4 comments

Comments

@yuichimita
Copy link

yuichimita commented Oct 5, 2017

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

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

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
Copy link
Member

nao-pon commented Oct 6, 2017

@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
Copy link
Author

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

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

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

  • サーバ: Localhost via UNIX socket
  • サーバの種類: MariaDB
  • サーバのバージョン: 10.1.28-MariaDB - MariaDB Server
  • プロトコル バージョン: 10
  • ユーザ: root@localhost
  • サーバの文字セット: UTF-8 Unicode (utf8)

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

  • nginx/1.10.2
  • データベースクライアントのバージョン: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $
  • PHP 拡張: mysqliドキュメント curlドキュメント mbstringドキュメント
  • PHP のバージョン: 7.1.10

@yuichimita
Copy link
Author

エラーが出たファイルの該当箇所の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
Copy link

kujiy commented Oct 17, 2017

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants