
Debian 9とPHP 7.3を実行して、コマンドでファイルを実行しようとしていますphp -f hello.php
。エコーの代わりにhello
ソースコードを出力します。完全なコードは次のとおりです。
#!/usr/bin/php
<?
echo 'hello';
?>
私がしたこと:
- ファイルに読み取りおよび実行権限があることを確認しました。
- PHPを確認しましたシバン行は正しいです。
- PHP CLI ツールがインストールされていることを確認しました。
何が問題なのでしょうか? どうすれば解決できるでしょうか?
答え1
PHP がファイルを解析するとき、開始タグと終了タグを探します。開始タグと終了タグは、その間にあるコードの解釈を開始および終了する
<?php
よう?>
に PHP に指示します。この方法で解析すると、開始タグと終了タグのペアの外側にあるものはすべて PHP パーサーによって無視されるため、PHP をあらゆる種類のドキュメントに埋め込むことができます。PHP では短いオープン タグも使用できます
<?
(ただし、これはshort_open_tag
php.ini
設定ファイルのディレクティブを使用して有効にした場合、または PHP がオプションで設定されている場合にのみ使用できるため、推奨さ--enable-short-tags
れません)。
(ソース)
したがって、最も信頼性の高い解決策は、コード内で<?php
の代わりにを使用することです。<?
答え2
その「シバン」は必要ありません。
#!/usr/bin/php
スクリプトを次のように作成します。php
開始の短いタグ ( <?
) に を追加する必要があることに注意してください。
<?php
echo 'hello';
?>
次に、次のように実行します。
php -f hello.php
または、 を省略して-f
次のように実行することもできます。
php ./hello.php
出力は次のようになります。
hello
さらに、次のように言うと:
- ファイルに読み取りおよび実行権限があることを確認しました。
PHP ファイルには実行権限は必要ありません。ファイルは PHP インタープリターによって読み取られ、解析されるため、読み取り権限のみが必要です。コマンド ラインと Apache モジュール PHP インタープリターでも同様です。