我使用了一些命令行PHP腳本。作者爲他們不使用shebang線。我把它們保存在/opt/scripts
目錄中。腳本搜索路徑
目前,如果我想運行他們的目錄,我必須使用完整路徑,例如
php /opt/scripts/foo.php
之外我更願意用
php foo.php
不管當前目錄。我是否可以修改php.ini
或其他一些技巧來允許這樣做?
我使用了一些命令行PHP腳本。作者爲他們不使用shebang線。我把它們保存在/opt/scripts
目錄中。腳本搜索路徑
目前,如果我想運行他們的目錄,我必須使用完整路徑,例如
php /opt/scripts/foo.php
之外我更願意用
php foo.php
不管當前目錄。我是否可以修改php.ini
或其他一些技巧來允許這樣做?
這自然會被includes_path指令進行處理,但不會考慮與CLI初始文件; include文件中使用的include將利用includes_path。
請參見:
[[email protected] ~]# php -v
PHP 5.2.9 (cli) (built: Oct 17 2010 16:55:28)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
[[email protected] ~]# php -i | grep include_path
include_path => .:/usr/lib/php:/usr/local/lib/php => .:/usr/lib/php:/usr/local/lib/php
[[email protected] ~]# ls /usr/lib/php
Archive Console HTML Net OS PEAR PEAR.php PEAR5.php Structures System.php XML build data doc pearcmd.php peclcmd.php test
[[email protected] ~]# php PEAR.php
Could not open input file: PEAR.php
一種替代方法是使用一個shell script(稱爲phpinc.sh假設),它讀取INI文件,解析它包含路徑,並調用php ${INCLUDE_PATH_PREFIX}$1
。你必須到該路徑添加到php.ini文件...例如:
#!/bin/sh
INCLUDE_PATH_PREFIX=grep -Ei '^include_path.*:([^ ]+)' /usr/local/lib/php.ini | grep -oEi ":[^:]+" | grep -oEi "[^:\"]+" | tail -1
php ${INCLUDE_PATH_PREFIX}$1 -c $2
用法: phpinc.sh file.php /path/to/custom/php.ini
我不使用在CLI中廣泛使用的grep(通常有PCRE API或包裝器),所以可能有更好的方法來縮小最後的包含路徑。
,您可以設置包括與加入「/選擇/腳本/」目錄路徑你的php.ini路徑。
你爲什麼不試試'../../ foo.php'! – tnanoba 2013-02-27 09:25:54