【问题标题】:Can't upload image files to permanent folder in MAMP. Newbie无法将图像文件上传到 MAMP 中的永久文件夹。新手
【发布时间】:2013-11-12 09:12:46
【问题描述】:

我正在尝试一些 php/mysql 资源,并且一直坚持使用 MAMP 将图像上传到永久文件夹。 这是表格:

<form action="create_user.php" method="post" enctype="multipart/form-data">
<fieldset>
<label for="first_name">First Name:</label>
<input type="text" name="first_name" size="20" /><br />
<label for="last_name">Last Name:</label>
<input type="text" name="last_name" size="20" /><br />
<label for="email">E-mail address:</label>
<input type="text" name="email" size="50" /><br />
<label for="facebook_url">Facebook URL:</label>
<input type="text" name="facebook_url" size="50" /><br />
<label for="twitter_handle">Twitter Handle:</label>
<input type="text" name="twitter_handle" size="20" /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<label for="user_pic">Upload a picture:</label>
<input type="file" name="user_pic" size="30" /><br />    
<label for="bio">Bio:</label>
<textarea name="bio" cols="40" rows="10"/></textarea>
</fieldset>
<br />

这是我的脚本中与表单交互的代码:

$upload_dir = SITE_ROOT . "missmanphpmysql/uploads/profile_pics/";
$image_fieldname = "user_pic";

这是检查权限等的函数和自定义函数:

@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename)
 or handle_error("we had a problem saving your image to " .
              "its permanent location.",
              "permissions or related error moving " .
              "file to {$upload_filename}");

我得到的只是上面的错误信息。我试图更改 finder 和 chmod 中的权限,但我可能做错了。非常感谢任何帮助。

【问题讨论】:

  • $upload_filename 函数是这样定义的 $now = time();而 (file_exists($upload_filename = $upload_dir . $now . '-' . $_FILES[$image_fieldname]['name'])) { $now++; }
  • 嗨。我终于解决了。我需要常量:网站根目录的 SITE_ROOT 和从文件系统到上传文件夹的 SITE_PATH 以上传图像。然后我将它与 $upload_dir 的“missmanphpmysql/uploads/profile_pics/”连接起来。定义(“SITE_ROOT”,“/sandbox/missmanphpmysql”);定义(“SITE_PATH”,“/Applications/MAMP/htdocs/sandbox/missmanphpmysql”);无论如何感谢您的所有帮助

标签: php permissions mamp


【解决方案1】:

您是否正确设置了文件夹权限? profile_pics 需要写权限。尝试使用终端并设置“chmod 777 profile_pics”。

【讨论】:

  • 嗨,我去了那个目录并添加了这些权限,它现在拥有这些权限 drwxrwxrwx。还是没有骰子。
  • 你可以尝试打印出你的 $upload_filename 是什么。我没有看到你在任何地方定义它。
  • 这就是我定义它的方式:$now = time();而 (file_exists($upload_filename = $upload_dir . $now . '-' . $_FILES[$image_fieldname]['name'])) { $now++;这是我收到的错误消息:收到以下系统级消息:权限或相关错误将文件移动到 /sandbox/missmanphpmysql/uploads/profile_pics/1384334923-IMG_0397.JPG。再次感谢您为我看这个。
  • 您的 SITE_ROOT 怎么样?你真的有 /sandbox/ 文件夹吗?
  • 嘿,是的,来自 Applcations/MAMP/htdocs/sandbox/ 等。再次感谢。
【解决方案2】:

在 $upload_filename 中使用 DIRECTORY_SEPARATOR constants dir php。 然后确保上传文件名正确,没有连续的 Dir sept 或丢失的文件。

确保你也关闭了表单标签。

【讨论】:

  • Litechip,感谢您的宝贵时间。我是新手,你能告诉你在 $upoad_filename 中使用 DIRECTORY_SEPERATOR 常量 dir php 是什么意思吗?我给了 $upload_dir 一个常量 SITE_ROOT ,我将它与 $upload_filename $now = time(); 一起使用而 (file_exists($upload_filename = $upload_dir . $now . '-' . $_FILES[$image_fieldname]['name'])) { $now++; }
【解决方案3】:

那个@在那里做什么?删除它。

move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename)

【讨论】:

  • 显然它停止该函数返回它自己的错误。所以我告诉了。我删除了它,仍然没有骰子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2018-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多