5

問題のファイルの作成が問題のある関数よりも少し遅れていると考えて、名前変更を呼び出す前に少し時間を稼ぐために while ループを実行してみました。

$no_file = 1;   
while($no_file && $no_file < 300)
{   // generation of Worksheet.xls may lag behind function -- WAIT FOR IT
    if(file_exists($old_path))
    {   $no_file = 0;
        rename($old_path, $new_path);
    }   else $no_file++;
}
if($no_file) die("Error: Worksheet.xls not found");

この構成では、file_exists() が true を返す場合にのみ rename() を呼び出すことができると考えていますが、私の人生では、rename() が呼び出されてから返されない方法/理由を理解できません...

PHP 警告: rename(C:\wamp\www\demox/wp-content/plugins/cat-man/store-manager/summary/worksheets/Worksheet.xls,C:\wamp\www\demox/wp-content/plugins /cat-man/store-manager/summary/statements/TESTING/2012/Worksheet.xls) そのようなファイルやディレクトリはありません...

4

3 に答える 3

13

statements/TESTING/2012/それはおそらくあなたが存在しないと言っているのです。mkdir()ファイルを保存できるように、これらのディレクトリを作成します。

mkdir( 'C:\wamp\www\demox/wp-content/plugins/cat-man/store-manager/summary/statements/TESTING/2012/', 777, true);
于 2013-01-18T23:40:43.887 に答える
1

わかりました、mkdir() は問題を解決しました! これがコンテキスト内のソリューションです。

$old_path = $smry_dir."worksheets/Worksheet.xls";
if(@$store_options->paypal_live ==='false')
{   $new_path = $smry_dir."statements/TESTING/$reporting_year";
}   else $new_path = $smry_dir."statements/$reporting_year";
if(!is_dir($new_path)) mkdir($new_path, 777, true);
rename($old_path, $new_path."/Worksheet.xls");

すべての助けをありがとう!ステートメント DIR は常に存在し、rename() は単一の新しいサブディレクトリ $reporting_year を問題なく書き込みますが、再帰的なサブディレクトリ "TESTING/$reporting_year" を書き込めない/書き込めないことがわかりました。

mkdir の再帰パラメータが助けになります!

于 2013-01-19T16:36:21.623 に答える