I have an upload script that did work on my local server (windows) but when i uploaded it to my linux server, it gave me the following warning message, then echoed my personal problem message (Problem: Could not move file to destination directory. Please retry.).
Warning Message:
Warning: move_uploaded_file(var/www/html/uploads/logo.jpg): failed to open stream: No such file or directory in /var/www/html/upload.php on line 165
Warning: move_uploaded_file(): Unable to move '/tmp/phpWFwQIV' to 'var/www/html/uploads/logo.jpg' in /var/www/html/upload.php on line 165
I have tried to find an error in my script but it worked on my Windows server. Here is my whole script:
HTML form:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000">
<input type="file" name="userfile" size="50">
<p><input type="submit" value="Upload File">
PHP (upload.php):
<?php
// code to block all malicious code, such as PHP files and Java, which could be a security risk.
//include footer file
include("footer.php");
// $userfile is where file went on webserver
$userfile = $HTTP_POST_FILES['userfile']['tmp_name'];
// $userfile_name is original file name
$userfile_name = $HTTP_POST_FILES['userfile']['name'];
// $userfile_size is size in bytes
$userfile_size = $HTTP_POST_FILES['userfile']['size'];
// $userfile_type is mime type e.g. image/gif
$userfile_type = $HTTP_POST_FILES['userfile']['type'];
// $userfile_error is any error encountered
$userfile_error = $HTTP_POST_FILES['userfile']['error'];
// userfile_error was introduced at PHP 4.2.0
// use this code with newer versions
if ($userfile_error > 0)
{
echo 'Problem: ';
switch ($userfile_error)
{
case 1: echo 'File exceeded maximum file size. File must be 5mb or smaller. Please <a href="file_upload.htm">retry</a>.'; echo($footer); break;
case 2: echo 'File exceeded maximum file size. File must be 5mb or smaller. Please <a href="file_upload.htm">retry</a>.'; echo($footer); break;
case 3: echo 'File only partially uploaded. Please <a href="file_upload.htm">retry</a>.'; echo($footer); break;
case 4: echo 'No file selected. Please <a href="file_upload.htm">retry</a>.'; echo($footer); break;
}
exit;
}
// end of code for 4.2.0
// prior to 4.2.0 use manual error checking as below
/*
if ($userfile=='none')
{
echo 'Problem: no file uploaded';
exit;
}
if ($userfile_size==0)
{
echo 'Problem: uploaded file is zero length';
exit;
}
*/
// end older version error checking
if ( eregi(".gif", $userfile_name) || eregi(".jpg", $userfile_name) || eregi(".pnj", $userfile_name) || eregi(".bmp", $userfile_name) || eregi(".htm", $userfile_name) || eregi(".html", $userfile_name) || eregi(".zip", $userfile_name) )
{
// put the file where we'd like it
$upfile = 'var/www/html/uploads/'.$userfile_name;
// is_uploaded_file and move_uploaded_file added at version 4.0.3
if (is_uploaded_file($userfile))
{
if (!move_uploaded_file($userfile, $upfile))
{
echo 'Problem: Could not move file to destination directory. Please <a href="file_upload.htm">retry</a>.';
echo($footer);
exit;
}
}
else
{
echo 'Problem: Possible file upload attack. Please <a href="file_upload.htm">retry</a>.';
echo($footer);
exit;
}
// older versions code as recommended in PHP manual
/*
function is_uploaded_file($filename) {
if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
$tmp_file = dirname(tempnam('', ''));
}
$tmp_file .= '/' . basename($filename);
// User might have trailing slash in php.ini...
return (ereg_replace('/+', '/', $tmp_file) == $filename);
}
if (is_uploaded_file($userfile))
{
copy($userfile, $upfile);
} else
{
echo 'Problem: Possible file upload attack. Filename: '.$userfile_name';
}
*/
// end older version
echo 'File uploaded successfully<br /><br />';
// reformat the file contents
#$fp = fopen($upfile, 'r');
#$contents = fread ($fp, filesize ($upfile));
#fclose ($fp);
#$fp = fopen($upfile, 'w');
#fwrite($fp, $contents);
#fclose($fp);
// show what was uploaded
echo "Click <a href=\"$upfile\">here</a> to view your file";
echo($footer);
}
else
{
echo ("Problem: File is a disallowed file type. Your file must be either an image file (.gif, .jpg, .pnj, .bmp) a HTML file (.htm, .html) or a zip file (.zip). Please <a href=\"file_upload.htm\">retry</a>.");
echo($footer);
exit;
}
?>
any help would be much appreiciated!