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