“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

不需要那個「shebang」:

#!/usr/bin/php

只要將你的腳本設定為這樣即可;請注意,您應該將 the 加到php開始短標記 ( <?):

<?php
echo 'hello';
?>

然後像這樣運行它:

php -f hello.php

或甚至省略-f並像這樣運行它:

php ./hello.php

然後輸出將是這樣的:

hello

另外,當你這樣說時:

  • 確認該檔案具有讀取和執行權限。

PHP檔案不必有執行權限;只有讀取權限,因為該檔案將由 PHP 解釋器讀取和解析。命令列以及 Apache 模組 PHP 解釋器也是如此。

相關內容