我使用一些命令行PHP脚本。作者为他们不使用shebang线。我将它们保存在/opt/scripts
目录中。
目前,如果我想在该目录之外运行它们,我必须使用完整路径,例如
php /opt/scripts/foo.php
我更愿意使用
php foo.php
无论当前目录如何。我可以修改php.ini
或其他一些技巧来允许这个吗?
答案 0 :(得分:1)
这自然会由includes_path指令处理,但不会被CLI的初始文件考虑在内;文件中使用的包含将使用includes_path。
请参阅:
[root@host ~]# 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
[root@host ~]# php -i | grep include_path
include_path => .:/usr/lib/php:/usr/local/lib/php => .:/usr/lib/php:/usr/local/lib/php
[root@host ~]# 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
[root@host ~]# php PEAR.php
Could not open input file: PEAR.php
一种替代方法是使用写入shell脚本(称为phpinc.sh,比如说)来读入INI文件,解析它以获取include_path,并调用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或包装器),因此可能有更好的方法来缩小最后一个包含路径。
答案 1 :(得分:0)
您可以通过添加'/ opt / scripts /'目录路径在php.ini中设置包含路径。