ミッションたぶんPossible

どこにでもいるシステムエンジニアのなんでもない日記です。たぶん。

コマンドライン(crontab)からPHPを実行させる際にinclude_pathを追加する

 仕事でめいいっぱい詰まったので、備忘録的にメモメモ。(こんなものに一日以上潰してしまった……、orz)


 PHPバッチ処理(crontab)やコマンドラインからの実行を行う場合、Webアクセスからだと実行できるのに、コマンドラインからだと「プログラム中でrequire_onceに指定したPHPファイルがみつからない」などと怒られる場合があります。php.iniのinclude_path指定が不足していることが原因だったりするんですが、変更するとWebアプリの方に影響が出ちゃう(かもしれない)のでいじりたくない!と思うことが往々にしてあります。


 そんな時には、phpコマンドのオプションでinclude_path指定を追加することが可能です。以下例。

$ /usr/bin/php -d include_path='.:/usr/share/pear:/usr/share/php:/hogehoge/lib:/hogehoge/conf' /hogehoge/bat/batch.php


 「-d」のオプションに続いてinclude_pathに追加する内容を記載し、最後に実行対象のPHPファイルを指定します。上記の場合ですと

というディレクトリをinclude_pathに追加していることになります。


 新規にアプリ作って実行する場合にはこんなメンドイことしないでrequire_onceに絶対パス指定したりphp.ini編集したりすればもっと楽に実行できるんですが、長い間運用しているシステムで既存のソースコードはいじれない、という時には役立つかと思います。