【发布时间】:2014-09-13 22:25:13
【问题描述】:
我正在使用 CodeIgniter 框架运行一个网站,并且我有多个页面可供用户上传文件(个人资料图片等)。
在我最近删除并替换了服务器上的上传文件夹之前,这一直运行良好。我使用 FileZilla 将权限设置为 777,然后确认权限实际上是在之后设置的。我仍然收到 CI 错误 上传目标文件夹似乎不可写。
此错误来自 system/core/Common.php(CI 框架的一部分)中指定行的以下函数:
if ( ! function_exists('is_really_writable'))
{
function is_really_writable($file)
{
// If we're on a Unix server with safe_mode off we call is_writable
if (DIRECTORY_SEPARATOR == '/' AND @ini_get("safe_mode") == FALSE)
{
return is_writable($file);
}
// For windows servers and safe_mode "on" installations we'll actually
// write a file then read it. Bah...
if (is_dir($file))
{
$file = rtrim($file, '/').'/'.md5(mt_rand(1,100).mt_rand(1,100));
if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE)
{
return FALSE; // RETURNS FALSE HERE <---
}
fclose($fp);
@chmod($file, DIR_WRITE_MODE);
@unlink($file);
return TRUE;
}
elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE)
{
return FALSE;
}
fclose($fp);
return TRUE;
}
}
我不知道是什么原因造成的。文件夹路径和权限和以前一模一样(实际上权限以前更严格),我没有更改上传表单的脚本。当我使用 Wamp 进行本地测试时,一切正常。
【问题讨论】:
-
只是为了好玩,试试
fopen($file, 'w+')看看有没有什么不同 -
@Machavity 这给了我完全相同的结果。此外,如果我只是让函数返回 true,则会收到错误 尝试将上传的文件移动到最终目的地时遇到问题。
标签: php codeigniter upload