2013-02-27 5 views
0

일부 명령 줄 PHP 스크립트를 사용합니다. 그 (것)들을위한 저자는 shebang 선을 이용하지 않는다. 나는 그들을 /opt/scripts 디렉토리에 보관한다.스크립트 검색 경로

현재 나는 현재 디렉토리에 관계없이

php foo.php 

를 사용하는 것을 선호 내가 전체 경로를 사용해야합니다 디렉토리, 예를

php /opt/scripts/foo.php 

의 외부를 실행하려는 경우. php.ini 또는 다른 트릭을 수정하여 허용 할 수 있습니까?

+0

'../../ foo.php'을 사용해 보시지 않겠습니다! – tnanoba

답변

1

이것은 자연스럽게 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을 광범위하게 사용하지 않으므로 마지막 포함 경로를 좁히는 더 좋은 방법이있을 수 있습니다.

0

'/ opt/scripts /'디렉토리 경로를 추가하여 php.ini에 포함 경로를 설정할 수 있습니다.