我有一个在暂存网站上运行的脚本,它会在其中获取上传的图像,创建目录(如果存在)并将图像上传到所述目录。
我正在尝试将创建的目录更改为实时网站并且没有运气。非常肯定,这个代码块仍然在寻找暂存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,我仍然希望在登台目录中创建/访问我希望创建或访问的目录。
答案 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。我无法编写目录,因为我在子域目录下。