我只是在使用$_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移动文件