File_get_contents返回false而不是is_readable返回true



我只是在使用$_FILES和file_get_contents时遇到了一些麻烦。

$nomFichier = $_FILES['pieceJointe']['name'];
echo is_readable($_FILES['pieceJointe']['tmp_name']);
echo $_FILES['pieceJointe']['error'];
if(file_get_contents($_FILES['pieceJointe']['tmp_name']) == false)
{
        echo "impossible de lire le fichier.<br/>";
}
else
{ 
         // store the file into a BLOB field in my database
}

is_readable display "1", $_FILES['pieceJointe']['error']显示0。但是file_get_contents返回false。

我注意到只有文件名包含重音的文件才会发生这种情况。只有字母/数字文件名,一切正常。

我错过了什么吗?

ps:我是法国学生,不专业,抱歉我的英语:0

谢谢!

使用var_dump查看is_readable()的实际值。你看到的"1"实际上是$_FILES['pieceJointe']['error']的输出,这意味着你试图上传的文件太大了。参见http://www.php.net/manual/en/features.file-upload.errors.php。

我猜你的php.ini文件的file_get_contents函数和open_basedir指令有冲突:

http://www.php.net/manual/en/ini.core.php ini.open-basedir

在读取文件之前尝试使用move_uploaded_file函数。它会将上传的文件从服务器的临时目录移动到指定的目录,(open_basedir指令只影响move_uploaded_file的目标参数)

$_FILES['pieceJointe']['tmp_name']只是一个文件名,而不是一个有效的完整路径?也许在打开文件之前先用move_uploaded_file移动文件

相关内容

  • 没有找到相关文章

最新更新