[英]Running CLI php script with execute bit
這一直困擾着我。
我知道你能做到
php foo.php
要么
php -f foo.php
有沒有辦法只啟動執行位設置的腳本
./foo.php
鑒於以下內容:
#!/usr/bin/php
<?php
exit('hello');
我得到“無法打開輸入文件”或“錯誤的解釋器:沒有這樣的文件或目錄”取決於“bin / php”之后是否有空格。
而不是#!/usr/bin/php
,使用#!/usr/bin/env php
是一個更好的解決方案。 這將在PATH
環境變量中查找PHP二進制文件。 這是更為強大的跨平台和。 例如,BSD在/usr/local/bin/php
安裝PHP。
此外,您需要確保這是第一行,並且腳本具有可執行位設置,為每個人設置它(通常可以)使用: chmod a+x script.php
還要確保已啟用CLI SAPI。 運行php -v
top verify,它應該顯示如下:
[~]% 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
您給出的示例代碼似乎沒問題,對我有用(我添加了結束?>
但是)
如果您可以使用/usr/bin/php foo.php
運行該文件,那/usr/bin/php foo.php
發生一些奇怪的事情。 只是一個瘋狂的猜測,但也許你的文本編輯器在文件的開頭留下BOM(字節順序標記),以便#!
不是該文件中的前兩個字節。 (你可以通過做hexdump -C foo.php | head
找出來)
從php(1)
頁:
提示
您可以使用shebang行自動從腳本調用php。 只有CLI版本的PHP會忽略這樣的第一行,如下所示:
#!/bin/php <?php // your script ?>
所以,shebang方法確實有效。 如果我在Vim中將行結尾設置為“unix”之外的其他內容,我會收到“:沒有這樣的文件或目錄”。 你在腳本中使用DOS行結尾嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.