move_uploaded_file() does not return any value or warning
| From: | Partha Chowdhury | Date: | Sat, 15 Oct 2011 03:01:17 +0000 |
| Subject: | move_uploaded_file() does not return any value or warning | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-315307@lists.php.net to get a copy of this message | ||
Hello List.
I am learning php and MySQL for my project work.
I am trying to upload files to local server.
First, a page is displayed on the browser to upload file
Relevant code:
<form method="post" action="index.php" enctype="multipart/form-data"> <input type="file" name="file"> <br> <input type="submit" name="submit" value="upload"> </form> After the user chooses a file and hit the submit button,the browser displays the content from the "uploads" directory.Php code:
<?phpThen i set a check for the return value of move-uploaded_file.if (isset ($_POST['submit']) && ($_POST['submit']=="upload")) { $pathname = "uploads"; if (!file_exists($pathname)) { $mkdir = mkdir($pathname); if (!$mkdir) { echo 'could not create directory uploads/'; exit(); } } $filename = $_FILES['file']['tmp_name']; $destination = "uploads/" . time() . "_-" . $_FILES['file']['name'];move_uploaded_file($filename, $destination);header("Location:uploads/"); But the uploads directory is empty and no warning or error is displayed !
if(isset ($move_uploaded_file)):
echo ""success;
else:
echo "error in uploading";
endif;
But it does not print anything ! .According to manual,
Returns *TRUE* on success. If /filename/ is not a valid upload file, then no action will occur, and *move_uploaded_file()* will return *FALSE*. If /filename/ is a valid upload file, but cannot be moved for some reason, no action will occur, and *move_uploaded_file()* will return *FALSE*. Additionally, a warning will be issued. So the above code should have printed "error in uploading".Then i tried the copy() function and it prints a warning:
*Warning*: copy() [function.copy <http://localhost/file_uploading/function.copy>]: Filename cannot be empty in */srv/www/htdocs/file_uploading/index.php* on line *38* line 38 is
copy($filename, $destination); Then i did a print_r($_FILES['file']) and found that $_FILES['file']['error'] was 1 .The problem was the file i was trying to upload was 6M in size,greater than upload_max_filesize in /etc/php.ini which was 2M.I changed that and now it works.So I want to know - does move_uploaded_file returns false on failure or is there a bug in my code ? I am using php 5.3.8 which is configured with
'./configure' '--prefix=/php' '--with-apxs2=/apache/bin/apxs' '--with-config-file-path=/etc' '--with-mysql-sock=/tmp/mysql.sock' '--with-openssl' '--with-zlib' '--enable-bcmath' '--with-bz2' '--enable-calendar' '--with-gdbm' '--with-enchant' '--enable-exif' '--enable-ftp' '--with-gd' '--enable-gd-native-ttf' '--with-gettext' '--with-gmp' '--enable-mbstring' '--with-mcrypt' '--with-readline' '--enable-soap' '--enable-sqlite-utf8' '--enable-zip' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-jpeg-dir=/usr/lib' '--with-freetype-dir' and error_reporting directive in php.ini is "error_reporting = E_ALL | E_STRICT".