Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用chmodDirectory创建目录时出现问题_Php_Chmod - Fatal编程技术网

Php 使用chmodDirectory创建目录时出现问题

Php 使用chmodDirectory创建目录时出现问题,php,chmod,Php,Chmod,我有一个脚本在一个临时站点上运行,它获取一个上传的图像,如果它存在,创建一个目录,并将图像上传到所述目录 我正在尝试将创建的目录更改为live站点,但运气不佳。可以肯定的是,这段代码仍然在寻找登台URL,而不是实时URL function chmodDirectory( $path = '.', $level = 0 ){ $ignore = array( 'cgi-bin', '.', '..' ); $dh = @opendir( $path ); while( false !

我有一个脚本在一个临时站点上运行,它获取一个上传的图像,如果它存在,创建一个目录,并将图像上传到所述目录

我正在尝试将创建的目录更改为live站点,但运气不佳。可以肯定的是,这段代码仍然在寻找登台URL,而不是实时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 ); 
}//作用

?> 提前感谢您的帮助


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

PHP中与文件相关的命令都是当前工作目录。您的chmodDirectory从开始。作为路径,表示当前工作目录,默认情况下,该目录是脚本所在的目录

如果您将临时站点作为活动站点的子目录运行,则无法将函数按原样指向活动目录,因为您将离开相对的“.”目录,而只能深入挖掘。例如,如果您的脚本位于:

/home/sites/example.com/htdocs/staging/v1.1/upload.php
然后将处理第一个目录

/home/sites/example.com/htdocs/staging/v1.1/
如果要在live area中启动进程,则必须使用以下原始路径调用函数:

chmodDirectory('../..'); // start two directories above the current working dir
或者更好:

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

作为路径,因此它将在实时版本下工作,而不是在临时区域内启动。

嘿,伙计们,谢谢你们的帮助。。。该错误实际上是在php.ini设置中的open_basedir中发生的。我无法写入目录,因为我位于子域目录下。

您没有描述出什么地方出错,预期结果是什么,您会遇到什么错误……我已经编辑了它。只是想再次澄清一下。它正在站点的暂存部分创建目录,我不确定它从何处获得$path以及如何将其设置为所需目录。请删除opendir前面的@,然后亲自查看它是否可以打开$path。。。。