私は作業中の drupal バッチ プロセスを持っています。その中で、PHPのコピー機能を使用して、ソースディレクトリからターゲットディレクトリに画像ファイル(JPG)をコピーしたいと考えています。両方のディレクトリが存在します。ソースファイルも存在します。しかし、コピーは成功しません。
ソース ディレクトリ (0755) とソース ファイル (0744) とターゲット ディレクトリ (0755) のファイル アクセス許可を確認しました。所有者とグループはスクリプトのものです。
コピーの成功をウォッチドッグに入れてデバッグしました。成功したとのことです。しかし、ファイルはそこにありません。
これは、コピーが行われるコードです
$copy_from = $_SERVER["DOCUMENT_ROOT"]."/".$file->filepath;
$copy_to = $_SERVER["DOCUMENT_ROOT"]."/".$path_new;
$success = false;
if (file_exists($copy_from)) {
$success = copy($copy_from, $copy_to);
watchdog('catalog_copy2', ($success ? 'yes' : 'no')
. ' | ' . "copy('{$copy_from}', '{$copy_to}')");
}
ウォッチドッグの出力をコピーして少し編集すると、シェルのコピー順になります
cp path/to/file dest_path
ファイルはファズなしでコピーされます。したがって、タイプミスや大文字と小文字を区別する問題は発生しません。
なぜPHPでファイルをコピーできないのか理解できないので、私は明らかに頭がおかしくなっています。
奇妙なことですが、一部のファイルは私のバッチでコピーされ、一部はそうではありません。
解決策を見つけるためにどこを探すべきか、ヒントをいただければ幸いです。
編集
cp
phpのコマンドを使用してシェルコマンドを使用することで問題を回避しましたexec
。私はこれに満足していませんが、それを機能させる必要がありました。
編集
file_field モジュールの API 関数を使用して問題を回避しました