![「php -f」はコードを実行せず、ファイルの内容のみを表示します。](https://rvso.com/image/1592548/%E3%80%8Cphp%20-f%E3%80%8D%E3%81%AF%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%9B%E3%81%9A%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AE%E3%81%BF%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
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 インタープリターでも同様です。