PHP文件上传无法在Mac测试台上运行


PHP File Upload not working on Mac test bed

我正在学习如何用PHP上传文件。我今天在OS X Yosemite 10.10.5上安装了最新版本的MAMP。它默认为PHP 7。以下代码是W3C的一个轻微修改,但没有起作用:

<?php
/**
 * File: upload.php
 * Description:
 *
 * @author David Brodersen.
 * @version:
 * @date: 12/16/15
 */
echo 'Outputting $_POST:' . '<br />';
print_r($_POST);
echo '<br /><br />Outputting $_FILES["userfile"]:' . '<br />';
print_r($_FILES['userfile']);
echo '<br />User file stats:<br />';
echo 'name: ' . $_FILES['userfile']['name'] . '<br />';
echo 'type: ' . $_FILES['userfile']['type'] . '<br />';
echo 'size: ' . $_FILES['userfile']['size'] . '<br />';
echo 'tmp_name: ' . $_FILES['userfile']['tmp_name'] . '<br />';
echo 'error: ' . $_FILES['userfile']['error'] . '<br /><br /><br />';
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload</title>
</head>
<body>
<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="upload.php" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="300000"/>
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file"/> <br/>
    <input type="submit" value="Send File"/>
</form>
</body>
</html>

我使用的是PHP Storm 10。当我使用指向Chrome的PHP Storm链接启动应用程序时。当网页打开时,我得到预期的:

Outputting $_POST:
Array ( ) 
Outputting $_FILES["userfile"]:
User file stats:
name: 
type: 
size: 
tmp_name: 
error: 

我选择一个300kb的图像文件,然后选择"发送文件"。选项卡中的微调器会旋转一段时间,然后页面会更新到第一次打开时的状态。没有统计报告。在PHP Storm的配置中,我使用的是PHP 7的PHP-cgi解释器。

检查php.ini文件中的这些值:

  • post_max_size
  • upload_max_filesize

对于MAMP,通常可以在以下路径中找到php.ini

/Applications/MAMP/bin/php/{PHP Version}/conf/php.ini

p.S:对于共享服务器,您不能访问php.ini文件,您可以使用.htaccess文件覆盖它们,如下所示:

php_value post_max_size 30M
php_value upload_max_filesize 30M

如果这个解决方案对您不起作用,您可能需要联系您的主机提供商,因为他可能不允许您更改php.ini值。