「php -f」はコードを実行せず、ファイルの内容のみを表示します。

「php -f」はコードを実行せず、ファイルの内容のみを表示します。

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 インタープリターでも同様です。

関連情報