ホームページ  >  記事  >  バックエンド開発  >  php コマンド ライン (cli) で PHP スクリプト ファイルを実行するための相対パスの問題の解決策、_PHP チュートリアル

php コマンド ライン (cli) で PHP スクリプト ファイルを実行するための相対パスの問題の解決策、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:01903ブラウズ

PHPスクリプトファイルをphpコマンドライン(cli)で実行する際の相対パス問題の解決策

phpコマンドラインで.phpファイルを実行する場合、実行環境(getcwd())の作業ディレクトリはphp コマンド プログラム (php.exe) を使用するため、ファイル内で相対パスを使用する場合は、まず現在の作業ディレクトリに切り替える必要があります。

小さなテストプログラム:
コードをコピーします コードは次のとおりです:
$oldpath = getcwd(); // 元の作業ディレクトリ php.exe が配置されているディレクトリ
$path = ディレクトリ名(__FILE__); chdir($path); //作業ディレクトリを現在のファイルが存在するディレクトリに切り替えます
$fpath = "フォーラム/readme.txt";

$fp = fopen($fpath, "a+b"); // 作業ディレクトリを切り替えないと、ファイルが見つからないエラーが報告されます
fwrite($fp, "oldpath:".$oldpath."-newpath:".getcwd());
fclose($fp);
?>

crotab を使用して定期的に実行する必要があるプログラムにも、この問題が発生します。次の記事を参照してください:

crontabで定期的に実行する必要があるphpスクリプトを使用してスクリプトを作成しましたが、以下のエラーが発生しました

コードは次のとおりです:

コードをコピーします コードは次のとおりです: /var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/share/phpPHP 警告: require(../class/connect.php): ストリームを開けませんでした: そのようなファイルはありませんまたは /var/www/html/bt/e/BtSys/torrents-scrape.php の 17 行目のディレクトリ
PHP 致命的エラー: require(): 必要な '../class/connect.php' を開くことができませんでした (include_path='/var/www/html/bt/e/BtSys:.:/usr/share/pear:/usr/ share/php') /var/www/html/bt/e/BtSys/torrents-scrape.php の 17 行目

解決策 1 を試して、次のコードを追加してください

コードをコピーします コードは次のとおりです: // インクルードパスを設定します
$cur_dir=getcwd(); $cur_dir=$basedir = ディレクトリ名(__FILE__); $path = ini_get('include_path'); ini_set("include_path", "$cur_dir:$path"); $path = ini_get('include_path'); // $パスをエコーし​​ます。 require(../class/a.php)
require(../class/b.php)
.....


実行に失敗しました

解決策 2 を試して、次のコードを追加してください

次のようにコードをコピーします:

コードをコピーします

コードは次のとおりです:

$cur_dir = ディレクトリ名(__FILE__); chdir($cur_dir); require(../class/a.php)
require(../class/b.php) 正常に実行されました

概要: 相対ディレクトリの場合、crontab で PHP スクリプトを実行するときに、スクリプトが配置されているディレクトリを入力する必要があります





http://www.bkjia.com/PHPjc/1005455.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/1005455.html

技術記事 php コマンド ライン (cli) で PHP スクリプト ファイルを実行するための相対パスの問題の解決策。php コマンド ラインで .php ファイルを実行する場合、実行環境 (getcwd()) の作業ディレクトリは php コマンド プロセスになります。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。