Извините за новый пост! Мне пока не доверяют комментировать другие посты.
У меня проблемы с копированием папок, и вот с чего я начал:
Скопируйте все содержимое каталога
функция
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
Мой вклад
$src = "http://$_SERVER[HTTP_HOST]/_template/function/";
$dst = "http://$_SERVER[HTTP_HOST]/city/department/function/";
recurse_copy($src, $dst);
Я также попробовал это
$src = "$_SERVER[DOCUMENT_ROOT]/_template/function/"; // And so on...
Функция выполняется, но ничего не копируется.
Есть идеи, что может быть не так?
РЕШИТЬ
Вместе с
$src = "$_SERVER[DOCUMENT_ROOT]/_template/function/";
$dst = "$_SERVER[DOCUMENT_ROOT]/city/department/function/";
recurse_copy($src, $dst);
Это не проверено, но я думаю, что проблема может заключаться в том, что целевой каталог не обязательно создается перед попыткой скопировать в него файлы. Кусок кода, который создает целевой каталог, потребует путь к папке, а не полный путь к файлу — следовательно, с использованием dirname( $dst )
if( !defined('DS') ) define( 'DS', DIRECTORY_SEPARATOR );
function recurse_copy( $src, $dst ) {
$dir = opendir( $src );
@mkdir( dirname( $dst ) );
while( false !== ( $file = readdir( $dir ) ) ) {
if( $file != '.' && $file != '..' ) {
if( is_dir( $src . DS . $file ) ) {
recurse_copy( $src . DS . $file, $dst . DS . $file );
} else {
copy( $src . DS . $file, $dst . DS . $file );
}
}
}
closedir( $dir );
}
Используйте локальные пути
$src= "_template/function/";
$dst= "city/department/function/";
recurse_copy($src, $dst);
copy
работает локально на вашем сервере. Вы пытаетесь копировать, используя схему HTTP, она не работает таким образом.