在网站建设与维护过程中,确保代码的安全性和功能性至关重要。如果你正按照某些朋友的建议通过删除代码来解决问题,那么请务必重新审视这一做法。这种操作不仅可能带来极大的安全风险,还可能导致网站运行不稳定。尤其是像DEDE这样的系统,本身就存在较多的安全隐患,任何不安全的修改或操作都可能危及整个网站的安全性。

接下来,我们来深入探讨一个常见的问题及其解决方法。以下是涉及的关键代码片段:

$imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); 
if (in_array(strtolower(trim(${$_key . '_type'})), $imtypes)) 
{ 
    $image_dd = @getimagesize($$_key); 
    if (!is_array($image_dd)) 
    { 
        exit('Upload filetype not allow !'); 
    } 
}

上述代码中的$$_key,实际上指的是上传文件的临时路径,例如“d:/php/temp/aaa.tmp”。从这段代码可以发现,getimagesize($$_key)这个方法正在请求PHP临时目录的读取权限。如果目标目录(如d:/php/temp)没有相应的读取权限,就会导致无法读取的错误。

值得注意的是,@getimagesize($$_key)返回的值实际上是False。然而,DEDE的开发者简单地使用了@符号屏蔽了错误提示,却没有充分考虑到权限问题。这使得用户难以准确判断问题的根本原因——即真正的问题是缺乏目录权限,而非文件类型不允许。

为了解决这个问题,我们可以采取以下两种方法:

1. 在PHP.ini中添加对d:/php/temp目录的读写权限。通常情况下,这一步无需特别操作,因为该目录一般默认可读写。否则,任何文件都无法成功上传。

2. 对于部分虚拟主机用户,如果添加了php_admin_value open_basedir指令,则需要进一步确保临时目录的权限被正确配置。例如:php_admin_value open_basedir "E:/wwwroot/www.a.com;D:/PHP/temp"。完成设置后,请记得重启WebServer以使更改生效。

通过以上步骤,您可以有效解决因权限不足导致的文件上传问题。希望这些信息能帮助您更好地维护网站安全与稳定运行。