2013-02-27 103 views
0

我使用了一些命令行PHP腳本。作者爲他們不使用shebang線。我把它們保存在/opt/scripts目錄中。腳本搜索路徑

目前,如果我想運行他們的目錄,我必須使用完整路徑,例如

php /opt/scripts/foo.php 

之外我更願意用

php foo.php 

不管當前目錄。我是否可以修改php.ini或其他一些技巧來允許這樣做?

+0

你爲什麼不試試'../../ foo.php'! – tnanoba 2013-02-27 09:25:54

回答

1

這自然會被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或包裝器),所以可能有更好的方法來縮小最後的包含路徑。

0

,您可以設置包括與加入「/選擇/腳本/」目錄路徑你的php.ini路徑。