あなたは例の中に配管することにより、STDINからphp -l
でコードを確認することができます。
$ echo "<?php echo 'hello world'" | php -l
Parse error: syntax error, unexpected end of file, expecting ',' or ';' in - on line 2
Errors parsing -
ここで終了セミコロン;
は、単一引用符で囲まれた文字列の後に不足しています。あなたはそれを追加した場合、エラーが消えるとPHPはそう説明します:
$ echo "<?php echo 'hello world';" | php -l
No syntax errors detected in -
ダッシュErrors parsing -
で-
かNo syntax errors detected in -
STDINの略です。これは一般的にそのために使用されています。
もう1つの方法は、自分のコードを書きたい(またはコピー&ペーストする)コードを書くことです。 BTW
$ php -l --
<?php echo "1"
^Z
Parse error: syntax error, unexpected end of file, expecting ',' or ';' in - on line 2
Errors parsing -
:これは、--
とリントスイッチを使用してコードを入力すると、それ自身のライン上にはCtrl + Dする(Linux)/ はCtrl + Z(ウィン)を入力し、それを終了することによって機能します、通常は実行するためのコードを提供することを意図している-r
スイッチは、このケースでは動作しませんし、それがエラーを与える:
$ php -l -r "echo 1"
Either execute direct code, process stdin or use a file.
ほとんどの場合、それはコードを実行するためのものとするために、それのthatsされているので、何の毛羽立ちありません。また、PHPタグを開くこともありません。すべてのこれらのオプションから
あなたは(あなたも、あなたがより多くの制御を必要とする場合にproc_open
で動作することができる)でパイプにそれをしたい場合は、最初のものは、おそらく最も理にかなっています。ここではPHPのexec
を使用して簡単な例です:次のように
<?php
/**
* PHP Syntax Checking with lint and how to do this on a string, NOT a FILE
*
* @link http://stackoverflow.com/q/12152765/367456
* @author hakre
*/
$code = "<?php echo 'hello world'";
$result = exec(sprintf('echo %s | php -l', escapeshellarg($code)), $output, $exit);
printf("Parsing the code resulted in; %s\n", $result);
echo "The whole output is:\n";
print_r($output);
出力は次のようになります。
Parsing the code resulted in; Errors parsing -
The whole output is:
Array
(
[0] =>
[1] => Parse error: syntax error, unexpected '"', expecting ',' or ';' in - on line 1
[2] => Errors parsing -
)
サーバはPHPコマンドラインへのアクセスをブロックしていますか?もしそうなら、この方法を使うのは無意味です。私は、すべてのまたはほとんどのサーバーに対応する必要があるソフトウェアを構築しています... –
これはあなたの助けに感謝します! +1、私は私の答えとしてこれを受け入れる前に、より多くの回答を待つだろう。 –
@SolomonClosson私はあなたがホスティングプロバイダについて質問していると思います。 AFAIKのほとんどのプロバイダは、PHPやコアダンプのバグのためにApacheサーバー全体を停止させたくないため、PHPをCGIとして実行します。 Apache 2.xを実行している場合はそうです。彼らがApache 1.xを何らかの方法で実行している場合、自動的に保護されますが、PHPをApacheモジュールとして実行しているホスティングプロバイダは見ていません。さて、PHPはCGIとして利用できるので、バイナリが存在する可能性がありますので、実行するためのアクセス権があります。 – g13n