dongliao1860 2009-11-16 05:43
浏览 39

too long

I'm going through the O'Reilly book Learning PHP & MySQL 2nd ed. by Michele Davis & Jon Phillips.

I'm stuck on example 11-28. The goal is to upload a picture and move it from /tmp to an uploads folder if it meets certain conditions: file size, type, and whether or not it was uploaded. This is being stored on my home Ubuntu server.

The form is here, and the code is here. Having a hard time getting it to show up.

When I hit the submit button w/o there being a file in the file box, I get the following warning:

Warning: unlink() [function.unlink]: No such file or directory in /home/luna/public_html/learn_php/up_urs.php on line 10

When I submit a file bigger than maxsize I get my error message:

Error. File must be less than 28480 bytes.

When I submit a file of the wrong type I get my error message:

You may only upload .gif & .jpg files.

When I submit a file that's the right type & size I get the following warning and my OK message:

Warning: move_uploaded_file(learn_php/uploads/) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/luna/public_html/learn_php/up_urs.php on line 21

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php4Mhykl' to 'learn_php/uploads/' in /home/luna/public_html/learn_php/up_urs.php on line 21 Thanks for your upload.

What I've tried:

  • I thought the problem was permissions but changing the directory learn_php to 777 made no difference so I changed it back to 755.
  • Changing the path from "uploads" to /home/luna/public_html/learn_php/uploads
  • Using getcwd() before & after the unlink & move_uploaded_file commands but that only told me I was in learn_php...
  • I tried uncommenting //print_r($_FILES); but that didn't show me anything after pressing submit.

Not sure what to look for now. Thanks for any help :)

  • 写回答

4条回答 默认 最新

  • drbmhd9583 2009-11-16 14:52
    关注

    The first error you see is because you are trying to unlink a file that doesn't exist on line 10. After you do the is_uploaded_file() check you should do a quick if ( isset($_FILES['upload_file']['tmp_name']) ) before doing the unlink.

    The last two warnings are because it seems you don't have the upload directory already created. I don't think move_uploaded_file() will create it for you. So just create that directory and make sure that it has proper permissions to be written to.

    As a beginner, I would also recommend checking the return values of these functions so that you don't return 'all good' when things have actually failed for some reason. Start putting in code like if ( !move_uploaded_file($_FILES['upload_file']['tmp_name'], "/path/to/learn_php/uploads/".$_files['upload_file']['name']) ) { $error = "Could not move the file to the uploads directory."; } else { print "All good, thanks for the upload."; exit(); }

    评论

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计