이것은 자연스럽게 include_path 지시문에 의해 처리되지만 CLI의 초기 파일에서는 고려되지 않습니다. includes includes include_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
하나의 대안은, INI 파일에 읽고 include_path를 위해 그것을 구문 분석 및 php ${INCLUDE_PATH_PREFIX}$1
를 호출 (의 말을하자 phpinc.sh라고도 함) 쉘 스크립트를 작성 사용하는 것입니다.
#!/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
사용법 : 당신은 예를 들어 ...의 php.ini 파일에 해당 경로를 추가해야합니다 phpinc.sh file.php /path/to/custom/php.ini
필자는 CLI (일반적으로 PCRE API 또는 래퍼가 있음)에서 grep을 광범위하게 사용하지 않으므로 마지막 포함 경로를 좁히는 더 좋은 방법이있을 수 있습니다.
'../../ foo.php'을 사용해 보시지 않겠습니다! – tnanoba