Originariamente inviato da telegio
FORSE in locale.. ma sui server web la vedo tosta.. e comunque non ci riesce quindi c'ho ragggggione io!! ah, ah, ah!! dai scherzo..
io con lo script seguente riesco a creare/rimuovere cartelle sul server... il server è o puro unix o windows con xampp... windows con iis non ho mai provato sinceramente
ovviamente, la cartella base dentro la quale si scrivono le altre cartelle deve avere i permessi di scrittura abilitati, altrimenti è un cavolo e tutt'uno
Codice PHP:
<?php
if(!defined('SLASH'))
define('SLASH','/');
class DDirectory{
public static function getPath($path = array()){
$entire_path = '';
foreach($path as $folder){
$entire_path .= $folder;
$entire_path .= SLASH;
}
return $entire_path;
}
public static function moveDirectory($oldpath,$newpath){
//copy all items in oldpath to newpath
if(is_dir($oldpath)){
$dir_handle = opendir($oldpath);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($oldpath.SLASH.$file)){
//sposto un file
exec('mv -u '.$oldpath.SLASH.$file." $newpath");
}else{
//sposto una directory
$path = DDirectory::createPath(array($newpath,$file));
DDirectory::moveDirectory($oldpath.SLASH.$file,$newpath.SLASH.$file);
}
}
}
closedir($dir_handle);
DDirectory::removeDirectory( $oldpath );
}
}
//create the path structure... only folders
public static function createPath($path = array()){
$entire_path = '';
foreach($path as $folder){
$entire_path .= $folder;
if(!file_exists($entire_path)){
$r = @mkdir($entire_path,0755);
if(!$r)
return false;
}
$entire_path .= SLASH;
}
return $entire_path;
}
public static function removeDirectory( $dir ) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
if (is_dir($dir))
$dir_handle = opendir($dir);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dir.SLASH.$file))
Directory::removeFile($dir.SLASH.$file);
else
Directory::removeDirectory($dir.SLASH.$file);
}
}
closedir($dir_handle);
rmdir($dir);
} else {
$dir = str_replace(" ","\\ ",$dir); //for mac e linux
exec( "rm -rf $dir" );
}
return true;
}
public static function removeFile( $file ) {
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
return unlink($file);
} else {
$file = str_replace(" ","\\ ",$file); //for mac e linux
exec( "rm -rf $file" );
}
return true;
}
}
?>
ovviamente la classe è una bozza grossolana perchè mi è servita solo in un paio di progettini
@siriuxs
ovviamente si può fare se crei la cartella dentro la cartella che ha i permessi di scrittura sul server. In windows chmod non funge, però la cartella che vai a creare dovrebbe ereditare i permessi della cartella madre.