Paul_Bunyan Posted July 11, 2008 Share Posted July 11, 2008 Hello. I am having problems uploading photos to my web server. I have set the permissions on the file "images" to 777 via dreamweaver but when I submit the upload I still get the error message: Warning: copy(images/1215797607.jpg) [function.copy]: failed to open stream: Permission denied I am using code found on this page (http://www.reconn.us/content/view/30/51/): I thought it was a permissions error at first but now I am wondering if there is something I may have overlooked in the code. Thanks in advance. <?php //define a maxim size for the uploaded images in Kb define ("MAX_SIZE","100"); //This function reads the extension of the file. It is used to determine if the file is an image by checking the extension. function getExtension($str) { $i = strrpos($str,"."); if (!$i) { return ""; } $l = strlen($str) - $i; $ext = substr($str,$i+1,$l); return $ext; } //This variable is used as a flag. The value is initialized with 0 (meaning no error found) //and it will be changed to 1 if an errro occures. //If the error occures the file will not be uploaded. $errors=0; //checks if the form has been submitted if(isset($_POST['Submit'])) { //reads the name of the file the user submitted for uploading $image=$_FILES['image']['name']; //if it is not empty if ($image) { //get the original name of the file from the clients machine $filename = stripslashes($_FILES['image']['name']); //get the extension of the file in a lower case format $extension = getExtension($filename); $extension = strtolower($extension); //if it is not a known extension, we will suppose it is an error and will not upload the file, //otherwise we will do more tests if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) { //print error message echo '<h1>Unknown extension!</h1>'; $errors=1; } else { //get the size of the image in bytes //$_FILES['image']['tmp_name'] is the temporary filename of the file //in which the uploaded file was stored on the server $size=filesize($_FILES['image']['tmp_name']); //compare the size with the maxim size we defined and print error if bigger if ($size > MAX_SIZE*1024) { echo '<h1>You have exceeded the size limit!</h1>'; $errors=1; } //we will give an unique name, for example the time in unix time format $image_name=time().'.'.$extension; //the new name will be containing the full path where will be stored (images folder) $newname="images/".$image_name; //we verify if the image has been uploaded, and print error instead $copied = copy($_FILES['image']['tmp_name'], $newname); if (!$copied) { echo '<h1>Copy unsuccessfull!</h1>'; $errors=1; } } } } //If no errors registred, print the success message if(isset($_POST['Submit']) && !$errors) { echo "<h1>File Uploaded Successfully! Try again!</h1>"; } ?> <!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" --> <form name="newad" method="post" enctype="multipart/form-data" action=""> <table> <tr><td><input type="file" name="image"></td></tr> <tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table> </form> Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/ Share on other sites More sharing options...
DarkWater Posted July 11, 2008 Share Posted July 11, 2008 Umm....via Dreamweaver? o-O I don't use it, so I don't know if it has an FTP program in it...You need to chmod the folder to 755 on the server. 777 should work too, but 755 is what you usually do with directories. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587788 Share on other sites More sharing options...
craygo Posted July 11, 2008 Share Posted July 11, 2008 there is a temp directory php uses. it is set in the php.ini file. You have to make sure the web user has access to this temp directory. Also try using move_uploaded_file() instead of copy. Also a lot of hosting companies don't allow chmod 777. even though it is set to 777 things don't work. try setting to 775 instead. Should still give you enough access. Ray Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587793 Share on other sites More sharing options...
DarkWater Posted July 11, 2008 Share Posted July 11, 2008 @craygo; I thought he would use 755 because 7 is read, write, execute...and you don't need to ever execute a directory. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587795 Share on other sites More sharing options...
craygo Posted July 11, 2008 Share Posted July 11, 2008 Can use that also, but my point is the 775 is the highest level most hosting companies will allow. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587808 Share on other sites More sharing options...
DarkWater Posted July 11, 2008 Share Posted July 11, 2008 Oh. Woops. =P Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587812 Share on other sites More sharing options...
craygo Posted July 11, 2008 Share Posted July 11, 2008 Absolutely no need for whoops my friend. At least you have explained the permissions a little more to Paul Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587823 Share on other sites More sharing options...
DarkWater Posted July 11, 2008 Share Posted July 11, 2008 Heh, good point. Now we just need to wait for him to post back. I also agree with craygo in that he should use move_uploaded_file. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587827 Share on other sites More sharing options...
Paul_Bunyan Posted July 11, 2008 Author Share Posted July 11, 2008 Thanks for the replies guys. I'm now using move_uploaded_file but I am having trouble locating my php.ini so that I can see where my temp file is located. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587837 Share on other sites More sharing options...
craygo Posted July 11, 2008 Share Posted July 11, 2008 do you host it yourself?? is this a test box which is local?? you can do this create a file called phpinfo.php, inside it put this <?php phpinfo(); ?> A few lines down will be the location of the php.ini file If this a local box on windows then it is in the windows folder. Ray Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587839 Share on other sites More sharing options...
Lamez Posted July 11, 2008 Share Posted July 11, 2008 use SmartFTP to upload the files, and make sure you check the permissions, I think you said you did. I am having a similar problem then I got over worked, and I will fix my problem later. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587844 Share on other sites More sharing options...
Paul_Bunyan Posted July 11, 2008 Author Share Posted July 11, 2008 Ok, so I found my temp directory for files and it's permissions are already set to 775. I'm still getting this error: Warning: move_uploaded_file(images/1215800976.jpg) [function.move-uploaded-file]: failed to open stream: & Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/fsfiles/ref/infocenter/fsweb/files/phpKk35Ea' to 'images/1215800976.jpg' Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-587851 Share on other sites More sharing options...
Paul_Bunyan Posted July 14, 2008 Author Share Posted July 14, 2008 I'm still trying to figure this out so I thought I'd bump the thread to see if anyone had any other ideas where I might be going wrong. Thanks for the help so far! Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-589587 Share on other sites More sharing options...
samshel Posted July 14, 2008 Share Posted July 14, 2008 The code pasted above works for me, Make sure "images" directory also has 775 permissions. Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-589594 Share on other sites More sharing options...
craygo Posted July 14, 2008 Share Posted July 14, 2008 i should have spotted this earlier, but when ever I use copy or move_uploaded_files or any function which move, erases, or copy's a file, I use the absolute path. Since you are moving a file from a temp folder which is not in your http root, the script may not be moving it to the right location. If you look at the error, I don't think the images folder is in the files folder which is the temp folder. i would try using the absolute path for your destination. Ray Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-589624 Share on other sites More sharing options...
Paul_Bunyan Posted July 16, 2008 Author Share Posted July 16, 2008 I just wanted to say thanks for all the help. It turns out that even though Dreamweaver was telling me that I had changed the permissions on my folder, on my web server it was not changing. I had to SSH in and chmod it. That, and I had to use the absolute path for my destination. Thank you! Quote Link to comment https://forums.phpfreaks.com/topic/114308-solved-uploading-photos-to-web-server/#findComment-591608 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.