![見出し画像](https://assets.st-note.com/production/uploads/images/148899961/rectangle_large_type_2_b7e398ae25042b005d38c10d76b71dea.png?width=1200)
PowerCMS X で PHP のメモリを増やす
ウェブサイトのページが途中までしか表示されない、HTMLソースも途中までしか表示されない事象が稀に起こります。
これは動的サイトで起こる事象で原因はメモリ不足です。
サーバーの物理メモリもそうですが、PHPのメモリが足りないことも原因です。
説明
PowerCMS X はアプリケーションディレクトリ直下に info.php ファイルが存在しますので、ブラウザからアクセスして現状の設定値を確認します。
設定項目は「memory_limit」です。
![](https://assets.st-note.com/img/1722231808555-efTz7kTofR.png?width=1200)
上記の例だと 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()
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": "4096M",
apache の再起動は不要と思いますが、info.php で値が更新されないなら再起動してみてください。
sudo systemctl restart httpd
物理メモリと Swap を増やしつつ、memory_limit を調整すればページを正常に表示できると思います。