![“php -f”不運行程式碼,只顯示檔案內容](https://rvso.com/image/1592548/%E2%80%9Cphp%20-f%E2%80%9D%E4%B8%8D%E9%81%8B%E8%A1%8C%E7%A8%8B%E5%BC%8F%E7%A2%BC%EF%BC%8C%E5%8F%AA%E9%A1%AF%E7%A4%BA%E6%AA%94%E6%A1%88%E5%85%A7%E5%AE%B9.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
不需要那個「shebang」:
#!/usr/bin/php
只要將你的腳本設定為這樣即可;請注意,您應該將 the 加到php
開始短標記 ( <?
):
<?php
echo 'hello';
?>
然後像這樣運行它:
php -f hello.php
或甚至省略-f
並像這樣運行它:
php ./hello.php
然後輸出將是這樣的:
hello
另外,當你這樣說時:
- 確認該檔案具有讀取和執行權限。
PHP檔案不必有執行權限;只有讀取權限,因為該檔案將由 PHP 解釋器讀取和解析。命令列以及 Apache 模組 PHP 解釋器也是如此。