使用chmodDirectory创建目录的问题

时间:2010-10-05 18:01:45

标签: php chmod

我有一个在暂存网站上运行的脚本,它会在其中获取上传的图像,创建目录(如果存在)并将图像上传到所述目录。

我正在尝试将创建的目录更改为实时网站并且没有运气。非常肯定,这个代码块仍然在寻找暂存URL而不是实时。

function chmodDirectory( $path = '.', $level = 0 ){  
$ignore = array( 'cgi-bin', '.', '..' ); 

$dh = @opendir( $path ); 


while( false !== ( $file = readdir( $dh ) ) ){ // Loop through the directory 
  if( !in_array( $file, $ignore ) ){
    if( is_dir( "$path/$file" ) ){
      chmod("$path/$file",0777);
      chmodDirectory( "$path/$file", ($level+1));
    } else {
      chmod("$path/$file",0777); // desired permission settings
    }//elseif 

  }//if in array 

}//while 

closedir( $dh ); 

} //功能

&GT?; 在此先感谢您的帮助!

编辑:问题在于即使我已经更改了路径并且数据库存储了正确的URL,我仍然希望在登台目录中创建/访问我希望创建或访问的目录。

2 个答案:

答案 0 :(得分:0)

PHP中与文件相关的命令都是“当前工作目录”。您以chmodDirectory()作为路径启动.,这意味着“当前工作目录”,默认情况下是脚本所在的目录。

如果您正在将暂存站点作为“实时”站点的子目录运行,则无法将该功能作为现场目录中的点,因为您将离开相对“。”目录,只挖更深。例如,如果您的脚本位于:

/home/sites/example.com/htdocs/staging/v1.1/upload.php

然后处理的第一个目录将是

/home/sites/example.com/htdocs/staging/v1.1/

如果您想在“实时”区域启动该过程,则必须使用以下原始路径调用该函数:

chmodDirectory('../..'); // start two directories above the current working dir

或更好:

chmodDirectory('/home/sites/example.com/htdocs/'); // start at this absolute path

作为路径,所以它将在“实时”版本中工作,而不是在暂存区域内启动。

答案 1 :(得分:0)

嘿伙计们,感谢您的帮助......错误实际上来自php.ini设置中的open_basedir。我无法编写目录,因为我在子域目录下。