私はif(function_exists("my_func")) echo 'function exists';
のような単一のphpステートメントを別々のphpファイルを使わずにコマンドラインで直接実行したいのです。
それはどのように可能ですか?
コマンドラインでPHPを実行する場合は、 phpsh、まともなPHPシェル をインストールすることをお勧めします=。それはもっと楽しいです。
とにかく、phpコマンドは、コマンドラインからコードを実行するためのtwoスイッチを提供します:
-r <code> Run PHP <code> without using script tags <?..?>
-R <code> Run PHP <code> for every input line
Phpの-r switchを使用できます。
php -r 'echo function_exists("foo") ? "yes" : "no";'
上記のPHPコマンドはoutputno
およびreturns0
ご覧のとおり:
>>> php -r 'echo function_exists("foo") ? "yes" : "no";'
no
>>> echo $? # print the return value of the previous command
0
別の面白いスイッチはphp -aです。
-a Run as interactive Shell
それはphpshと比較したラメの一種ですが、インストールしたくない場合は PHP向けの素晴らしいインタラクティブシェルタブ補完、履歴などを取得するためのfacebook 、次にuse -a such as:
>>> php -a
Interactive Shell
php > echo function_exists("foo") ? "yes" : "no";
no
php >
それが機能しない場合私の箱のようなあなたの箱*es*(testedUbuntuおよびArchで)、次におそらくPHPセットアップがファジーまたは壊れている。このコマンドを実行する場合:
php -i | grep 'API'
あなたshouldを参照:
Server API => Command Line Interface
しない場合、これは多分別のコマンドがCLI SAPIを提供することを意味します。 php-cliをお試しください。OSで利用可能なパッケージまたはコマンドの可能性があります。
行う場合phpコマンドがCLI(コマンドラインインターフェイス)SAPI(サーバーAPI)を使用していることを確認したら、php -h | grep code
を実行してどのクレイジースイッチを見つける-これは年間変更されていないので/バージョン/セットアップでコードを実行できます。
私のボックスで動作することを確認するための別の例:
>>> php -r 'echo function_exists("sg_load") ? "yes" : "no";'
no
>>> php -r 'echo function_exists("print_r") ? "yes" : "no";'
yes
また、拡張機能がCGIまたはApache SAPIではなくCLIにロードされる可能性があることに注意してください。複数のPHP SAPIが異なるphp.iniファイルを使用している可能性が高い、例: /etc/php/cli/php.ini
vs /etc/php/cgi/php.ini
vs /etc/php/Apache/php.ini
Gentooボックスで。 php -i | grep ini
で使用されているiniファイルを見つけます。
コマンドラインで:
php -i | grep sourceguardian
それがそこにあれば、それからあなたはいくつかのテキストを得るでしょう。そうでなければ、あなたはものを得ることはありません。
以下を使用できます。
echo '<?php if(function_exists("my_func")) echo "function exists"; ' | php
短いタグ "<?="も役立ちます:
echo '<?= function_exists("foo") ? "yes" : "no";' | php
echo '<?= 8+7+9 ;' | php
終了タグ「?>」はオプションですが、最後の「;」を忘れないでください!