0

私はいくつかのコマンドライン PHP スクリプトを使用しています。それらの作者はシバンラインを使用しません。それらを/opt/scriptsディレクトリに保持します。

現在、そのディレクトリの外でそれらを実行したい場合は、フルパスを使用する必要があります。例

php /opt/scripts/foo.php

私は使用することを好む

php foo.php

現在のディレクトリに関係なく。これを許可するために、おそらく変更php.iniまたは他のトリックを行うことはできますか?

4

2 に答える 2

1

これは当然 includes_path ディレクティブによって処理されますが、CLI からの初期ファイルでは考慮されません。ファイル内で使用される include は 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

1 つの代替方法は、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 (通常は PCRE API またはラッパーを使用) では grep をあまり使用しないため、最後のインクルード パスを絞り込むためのより良い方法があるかもしれません。

于 2013-02-27T10:16:08.137 に答える
0

「/opt/scripts/」ディレクトリ パスを追加して、php.ini にインクルード パスを設定できます。

于 2013-02-27T09:45:32.590 に答える