【问题标题】:Using PHP script to save an image file in localhost - wont work使用 PHP 脚本在 localhost 中保存图像文件 - 不起作用
【发布时间】:2017-08-13 19:38:27
【问题描述】:

全部,

我已经按照下面的链接让 PHP 在我的 MacBook Pro (OS 10.12.6) 上运行。当我使用时,我什至会出现 phpinfo http://localhost/~USERNAME/phpinfo.php。 ~USERNAME 替换为我的真实用户名。

但是,当我在 WebStorm (2016.3.1) 中创建一个新项目并使用下面的 HTML 和 PHP 代码时......我遇到了问题。我的目标是有一个上传输入按钮,以便用户可以将图像上传到我的 localhost 暂存文件夹中。但是,当在 WebStorm 中运行我的 index.html 时,upload.php 文件会下载到我的下载文件夹中。而且我在输入元素中选择的文件永远不会进入暂存文件夹。

仅供参考,我已修改本地 php.ini 以包含以下条目。然后我重新启动了 apache2(通过 sudo apachectl restart)。

你们会碰巧知道我做错了什么吗?感谢您的帮助。

在 MAC 上设置 PHP 的链接

https://ole.michelsen.dk/blog/setup-local-web-server-apache-php- osx-yosemite.html

HTML
<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

PHP

 <?php

   $uploaddir = 'staging/';
   $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
   move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);

 ?>

   PHP.INI

   file_uploads = on
   post_max_size = 40M
   upload_max_filesize = 40M
   post_max_size = 40M
   max_execution_time : 6000
   max_input_time : 6000
   memory_limit : 128M

【问题讨论】:

  • 您可能关闭了 PHP 的错误报告。即便如此,如果您查看 Apache 的错误日志(下一次!),您可能会找到 @RiggsFolly 给您的答案:)
  • 您对查看日志有什么建议吗?我查看了 /var/log/apache2 并重命名了 error_log 和 access_log。但是,在我尝试运行我的网站后,并没有创建新的 error_log 文件。
  • 将这两行添加到项目调用的第一个 PHP 文件(index.php 等)中。它不必出现在每个文件中,只需在执行其余代码之前调用一次即可:ini_set('display_errors',1); error_reporting(E_ALL); 只会将错误显示在屏幕上,这对您的目的来说更容易。

标签: javascript php html apache webstorm


【解决方案1】:

输入中的name 属性必须与 PHP 脚本中使用的名称匹配

<input type="file" name="fileToUpload" id="fileToUpload">
                   ^^^^^^^^^^^^^^^^^^^ 

所以像这样修改 PHP 脚本

<?php

    $uploaddir = 'staging/';
    $uploadfile = $uploaddir . basename($_FILES['fileToUpload']['name']);
    //                                           ^^^^^^^^^^^^
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile);
    //                          ^^^^^^^^^^^^

?>

【讨论】:

  • RiggsFolly,我逐字复制了您建议的代码。但是我的问题仍然存在。我将研究如何查看错误代码......正如 Lucas Krupinski 提到的那样。
猜你喜欢
  • 2015-08-13
  • 2011-01-13
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多