file_get_contents返回false而不是is_readable true

时间:2014-03-18 13:33:51

标签: php file upload file-get-contents

我在使用$ _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&#34; 1&#34;,$ _FILES [&#39; pieceJointe&#39;] [&#39; error&#39;]表示0。 但是file_get_contents返回false。

我注意到只有名称中包含重音的文件才会发生。 一切都工作正常,只有字母/数字文件名。

我错过了什么吗?

ps:我是法国学生,不专业,对不起我的英语:o

THX!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我猜你的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的目标参数)

答案 2 :(得分:0)

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