One reason a script may not work on one server and works well on another is different software. Perhaps your client is using an older version of PHP?
In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead of $_FILES. Judging by your phpinfo() scripts, that doesn't seem so. But it's worth looking at!
Maybe you're just having an issue w/the upload itself? I don't know for sure. I wrote an image uploader test script a while back & it's helped others, maybe it can help you. It's a small, 2 part script.
<?php
# vars.php
/*
* Maximum Size an image may be
*
* $maxImageSize
*
* 51200 = 50 KB
* 512000 = 500 KB
*
*/
$maxImageSize = "512000";
/*
* Path Information
*
* 1.) $file_dir
*
* 2.)$file_url
*
* 1.) full path ex /home/user/public_html/images
*
* 2.) full url ex http://www.site.com/images
*
* NO TRAILING SLASH!!
* Directory to move images to should be writeable. If you must, chmod 777
*
*/
$file_dir = "/home/paul/public_html/FREE/upload/images";
$file_url = "http://localhost/~paul/FREE/upload/images";
/*
* Defining accepted Image Types
*
* Add more like shown below:
*
* $acceptedImageType[] = "type";
*
*/
$acceptedImageType = array ( "pjpeg", "pjpg", "jpg", "jpeg", "gif", "png", "x-png", "PNG", "x-xbitmap" );
$acceptedImageType[] = "x-bmp";
/*
* Defining a Page's Own URL
*
* $self=$_SERVER['PHP_SELF'];
*
*/
$self=$_SERVER['PHP_SELF'];
?>
<?php
# upLoadForm.php
include_once("vars.php");
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
# Foreach loop 1
foreach( $_FILES as $file_name => $file_array )
{
echo "name: ".$file_array['name']."<br />\n";
echo "type: ".$file_array['type']."<br />\n";
echo "tmp_name: ".$file_array['tmp_name']."<br />\n";
echo "error: ".$file_array['error']."<br />\n";
echo "size: ".$file_array['size']."<br />\n";
// print_r($_FILES);
$tmp_name = $file_array['tmp_name'];
if( strstr( $tmp_name, "/tmp/" ) ) {
$tmp_name = str_replace("/tmp/", "", $tmp_name); # strip location from name :Linux
}
elseif( strstr( $tmp_name, "C:\\WINDOWS\\TEMP\\" ) ) {
$tmp_name = str_replace("C:\\WINDOWS\\TEMP\\", "", $tmp_name); # strip location from name :Windows
}
# Foreach loop 2
foreach ( $acceptedImageType as $acceptThis ) {
if(is_uploaded_file( $file_array['tmp_name'] ) && $file_array['type'] == "image/$acceptThis" ) {
$size=$file_array['size'];
if($size > $maxImageSize)
{
exit("The image is too large in size.");
}
move_uploaded_file( $file_array['tmp_name'], "$file_dir/".$tmp_name)
or die("Couldn't Copy");
echo "<img src=\"$file_url/".$tmp_name."\">";
echo "<br />\n\n";
} // End IF statement
} // End Foreach loop 2
} // End Foreach loop 1
?>
<form action="<?php echo "$self"; ?>" enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo "$maxImageSize"; ?>">
<input type="file" name="fupload">
<br /><br />
<input type="submit" value="Upload">
<br />
</form>
I know this won't directly answer your question, but you did mention that you were new at working with PHP - if you understand the $file_array - working with files just gets easier.