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 を使用して定期的に実行する必要があるプログラムにも、この問題が発生します。次の記事を参照してください:
コードは次のとおりです:
コードをコピーします コードは次のとおりです:
/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)
正常に実行されました
http://www.bkjia.com/PHPjc/1005455.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/1005455.html