PowerCMS X で PHP のメモリを増やす
ウェブサイトのページが途中までしか表示されない、HTMLソースも途中までしか表示されない事象が稀に起こります。
これは動的サイトで起こる事象で原因はメモリ不足です。
サーバーの物理メモリもそうですが、PHPのメモリが足りないことも原因です。
説明
PowerCMS X はアプリケーションディレクトリ直下に info.php ファイルが存在しますので、ブラウザからアクセスして現状の設定値を確認します。
設定項目は「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 に設定しても意味がありません。これは設定ファイルを読み込む優先順位があるからです。
優先順位のルールは下記サイトから引用します。
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 を調整すればページを正常に表示できると思います。