php.ini 設定を使用してauto_prepend_file
、実際のファイルの前に常に実行する必要があるファイルを指定できます。
Interactive shellのドキュメントによると、この設定はそこでも有効です。
PHP を起動するたびにこの初期化を行いたくない場合は、php.ini のコピーを作成し (たとえば、「php.ini-interactive」と呼びます)、その構成ファイルを-c
オプションで指定することをお勧めします。 : php -c /path/to/php.ini-interactive -a
.
(この回答と質問自体に関するいくつかのコメントの後に、この部分を追加しました。)
PHPインタラクティブシェルのドキュメントページのコメント(「Ryan P」による)によると、php -a
常に同じことをするとは限りません:
インタラクティブ シェルとインタラクティブ モードは、名前と機能が似ていますが、同じものではありません。
「php -a」と入力し、「Interactive Shell」の応答に続いて「php>」プロンプトが表示された場合は、対話型シェルを使用できます (PHP は readline サポート付きでコンパイルされています)。代わりに「インタラクティブ モードが有効になっています」という応答が返された場合は、インタラクティブ シェルを使用できないため、この記事は適用されません。
「php -m」をチェックして、出力に readline がリストされているかどうかを確認することもできます。リストされていない場合は、対話型シェルがありません。
対話モードは、基本的に、stdin をファイル入力として php を実行するようなものです。コードを入力するだけで完了 (Ctrl-D) すると、php は入力した内容を通常の PHP (PHTML) ファイルであるかのように実行します。
インタラクティブシェルを使用できる PHP のコピーがありません。どうやらインタラクティブモードしかありません。私はテストしました (以下を参照) で構成されたファイルauto_prepend_file
が対話モードで実行されることを確認できます。ただし、私と同じ症状が発生した場合は、使用を再検討することをお勧めします。
tomas@debianvm:~$ cat /tmp/prepend.php
<?php
echo 'cookies are people too!';
tomas@debianvm:~$ grep auto_prepend_file /etc/php5/cli/php.ini
auto_prepend_file =
tomas@debianvm:~$ grep auto_prepend_file /etc/php5/cli/php.ini-interactive
auto_prepend_file = /tmp/prepend.php
tomas@debianvm:~$ php -a
Interactive mode enabled
tomas@debianvm:~$ php -c /etc/php5/cli/php.ini-interactive -a
Interactive mode enabled
cookies are people too!
Segmentation fault
tomas@debianvm:~$ php --version
PHP 5.4.4-14+deb7u2 (cli) (built: Jun 5 2013 07:56:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
(その最後の対話モード実行でのキーボード入力は、Ctrl-d に続く return のみです。)