這已經讓我略微感到困擾。運行CLI php腳本執行位
我知道你能做到
php foo.php
或
php -f foo.php
有沒有辦法只是啓動與執行位腳本設置
./foo.php
考慮如下因素:
#!/usr/bin/php
<?php
exit('hello');
根據「bin/php」後面是否有空格,我得到「無法打開輸入文件」或「錯誤的解釋器:沒有這樣的文件或目錄」。
這已經讓我略微感到困擾。運行CLI php腳本執行位
我知道你能做到
php foo.php
或
php -f foo.php
有沒有辦法只是啓動與執行位腳本設置
./foo.php
考慮如下因素:
#!/usr/bin/php
<?php
exit('hello');
根據「bin/php」後面是否有空格,我得到「無法打開輸入文件」或「錯誤的解釋器:沒有這樣的文件或目錄」。
你給出的示例代碼似乎確定,對我的作品(我加的收盤?>
雖然)
如果可以運行該文件與/usr/bin/php foo.php
有事情很奇怪。只是一個瘋狂的猜測,但也許你的文本編輯器在文件的開頭留下一個BOM(字節順序標記),以便#!
不是該文件中的前兩個字節。 (你可以在這裏找到hexdump -C foo.php | head
)
這是BOM!謝謝! – Greg
而不是#!/usr/bin/php
,使用#!/usr/bin/env php
是一個更好的解決方案。這將在PATH
環境變量中查找PHP二進制文件。這是多更穩健&跨平臺。例如BSD在/usr/local/bin/php
中安裝PHP。
此外,您將需要確保這是第一線,並且該腳本具有可執行位設置,將其設置爲每個人(一般正常)使用方法:chmod a+x script.php
另外,還要確保你啓用CLI SAPI。運行php -v
頂部驗證,它應該顯示是這樣的:
[~]% php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:21:30)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
從php(1)
手冊頁:
TIPS
可以使用shebang行從 腳本自動調用PHP。只有PHP的CLI版本會忽略這樣的第一線 如下圖所示:
#!/bin/php <?php // your script ?>
所以,認領方法確實可行。如果我在Vim中設置了行結尾而不是「unix」,我會得到「:沒有這樣的文件或目錄」。你在腳本中使用DOS行結束符?
好抓!謝謝。 – Greg
你有php在/ usr/bin/php嗎? – Subdigger
@Subdigger是的。這對你有用嗎?我不知道我是否試圖強迫它做一些不該做的事情。 – Greg