見出し画像

PowerCMS X で PHP のメモリを増やす

ウェブサイトのページが途中までしか表示されない、HTMLソースも途中までしか表示されない事象が稀に起こります。
これは動的サイトで起こる事象で原因はメモリ不足です。
サーバーの物理メモリもそうですが、PHPのメモリが足りないことも原因です。

説明

PowerCMS X はアプリケーションディレクトリ直下に info.php ファイルが存在しますので、ブラウザからアクセスして現状の設定値を確認します。

設定項目は「memory_limit」です。

memory_limit

上記の例だと Local Value が 2048M で、Master Value が 128M です。
PHPメモリは php.ini に設定するのが一般的で、それがMaster Value の値になります。

php.ini のディレクトリパスは下記だと思います。ファイル内に「memory_limit」の設定行があると思います。

sudo vi /etc/php.ini

ただし、PowerCMS X は php.ini に設定しても意味がありません。これは設定ファイルを読み込む優先順位があるからです。

優先順位のルールは下記サイトから引用します。

右に行くほど後から読み込まれる(=左で設定した内容を上書きする)
php.ini < httpd.conf < .htaccess < ini_set()

PHPの設定ファイルの優先順位メモ

PowerCMS X で ini_set() を指定しているので、php.ini に設定しても意味がないということです。

PowerCMS X のコードはファイル「class.Prototype.php」で確認できます。

# ファイルパス

[アプリケーションディレクトリ]/class.Prototype.php

memory_limit を変数に指定して、

    public    $memory_limit  = '2048M';

ini_set を使用しています。

        ini_set( 'memory_limit', $this->memory_limit );

この「2048M」が info.php で確認した「Local Value が 2048M」になります。

memory_limit を環境変数で設定する

memory_limit を設定する環境変数があります。PowerCMS X 管理画面から設定ができないので、アプリケーションディレクトリ直下にある config.json から行を追加してください。2GBがデフォルトなので、4GBあたりから試して見るとよいかもです。

        "memory_limit": "4096",

apache の再起動は不要と思いますが、info.php で値が更新されないなら再起動してみてください。

sudo systemctl restart httpd

物理メモリと Swap を増やしつつ、memory_limit を調整すればページを正常に表示できると思います。

いいなと思ったら応援しよう!