0

フォルダからファイルをコピーしようとしています。

私はこの機能を持っています:

   private function rec_copy ($source, $dest) {
       foreach (
           $iterator = new \RecursiveIteratorIterator(
               new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS),
               \RecursiveIteratorIterator::SELF_FIRST) as $item
       ) {
           if ($item->isDir()) {
               mkdir($dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
           } else {
               copy($item, $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName());
           }
       }
    }

この関数は、次の関数と完全に連携します。

protected function copy_translation($directory,$value)
    {
        $directorio = $directory;
        $newfolder = '/var/www/vhosts/something/modules/'.$value;
        $newfolder_translation = $newfolder.'/translations/';
        mkdir($newfolder);
        mkdir($newfolder_translation);
        $this->rec_copy( $directorio,$newfolder_translation);
    }

ただし、これを試してみると失敗します。

public function otherfunction($language){
        foreach ($this->list as $key => $value){
            $directory = '/var/www/vhosts/something/modules/'.$value.'/translations/';
            if (is_dir($directory)){
                $source = $directory.'de/';
                $destination = $directory . $language . '/';
                mkdir($destination);
                $this->rec_copy($source,$destination);
            }
        }
    }

彼らは皆同じ​​クラスです。関数otherfunctionは実際に でディレクトリを作成するmkdir($destination)ため、フォルダーのパスとパーミッションは問題になりません。

ログには何もなく、エラー表示もありません。3 番目の関数で実行する $this->rec_copy($source,$destination);と、「shop is offline」と表示されますが、前述のように 2 番目の関数では問題なく動作します。

それが役立つ場合、私は oxid 4.9.7 を使用していますが、プラットフォーム自体は私にとって問題ではないようです。

4

0 に答える 0