我正在学习如何用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值。