php -d memory_limit=256Mでメモリ制限を一時的に変える

  • PHP
  • CLI

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

何を知りたかったか

こういうコマンドを見た。

$ php -d memory_limit=256M script.php

-d って何をしてるのか、php.ini 自体が変わるのか、というあたりが気になったので確認した。

結論

-d はphp.iniのディレクティブをコマンドラインから一時的に上書きするオプション。memory_limit=256M と組み合わせると、そのプロセスの実行中だけメモリ制限を256MBにする。

  • php.ini のファイル自体は変更されない
  • 上書きが効くのはこの1回の実行だけで、次にphpを呼んだときはまたphp.iniのデフォルト値に戻る
  • 複数のディレクティブを一度に上書きしたい場合は -d を複数回書けばいい(例: php -d memory_limit=256M -d display_errors=1 script.php)

用途としては、デフォルトの memory_limit(環境によっては 128M など)だと足りない処理、例えば大きな配列を扱う処理や画像処理、大量データのインポートなどを一時的に緩和して動かしたいときに使う形。Allowed memory size of ... bytes exhausted というエラーが出たときの応急処置としてもよく見る。

補足

  • -d はCLIだけでなくphp-cgi経由でも使える
  • 恒久的に変えたいなら php.ini の memory_limit を直接書き換えるか、Apacheなら .htaccess や php_admin_value を使う方向になる。ただしこれは実行環境やSAPIの構成次第なので実機未確認