【发布时间】:2011-03-09 23:14:00
【问题描述】:
我必须上传一个 34MB 的 pdf 文件。我的网站在 Linux 中使用 php。但我的网站只支持 8MB。 (我从 phpinfo 知道这一点)。我如何增加尺寸?听说可以在php.ini中改一下。访问。但是我从哪里得到 php.ini?我如何更改大小?有没有人给我一个解决方案?
【问题讨论】:
我必须上传一个 34MB 的 pdf 文件。我的网站在 Linux 中使用 php。但我的网站只支持 8MB。 (我从 phpinfo 知道这一点)。我如何增加尺寸?听说可以在php.ini中改一下。访问。但是我从哪里得到 php.ini?我如何更改大小?有没有人给我一个解决方案?
【问题讨论】:
您可以在 .htaccess 中执行此操作:
php_value memory_limit 64M
php_value upload_max_filesize 32M
php_value post_max_size 32M
php_value max_execution_time 600
php_value max_input_time 600
或 php.ini(见上面的变量)
【讨论】:
upload_max_filesize、post_max_size 和max_input_time 不能用ini_set() 设置。请参阅Where a configuration setting may be set、File Uploads、Data Handling 和Runtime Configuration 了解更多信息。
有多种设置会影响最大文件上传大小:
PHP_INI_PERDIR:以下设置可以在php.ini、.htaccess或httpd.conf中设置:
upload_max_filesize
上传文件的最大大小。
post_max_size
设置允许的发布数据的最大大小。要上传大文件,该值必须大于upload_max_filesize。如果您的配置脚本启用了内存限制,memory_limit 也会影响文件上传。
max_input_time
这设置了允许脚本解析输入数据(如 POST、GET 和文件上传)的最长时间(以秒为单位)。
PHP_INI_ALL: 可以在 php.ini、.htaccess、httpd.conf 或 ini_set() 中设置以下设置:
max_execution_time
这设置了脚本在被解析器终止之前允许运行的最长时间(以秒为单位)。如果此限制过低,您的脚本将在大文件有时间上传之前终止。
memory_limit
这设置了允许脚本分配的最大内存量(以字节为单位)。如果您的配置脚本启用了内存限制,那么 memory_limit 也会影响文件上传。一般来说memory_limit应该大于post_max_size。
POST上传方式
通过 POST 方法上传文件时,您还需要在 HTML 表单中设置MAX_FILE_SIZE。有关详细信息,请参阅此内容:
http://www.php.net/manual/en/features.file-upload.post-method.php
共享主机
如果您使用的是共享主机,您不太可能能够访问系统 php.ini 文件。但是,您可以在 .htaccess 或每个目录的 php.ini 文件中设置值。一些共享主机提供商可能会阻止您这样做,因此您需要检查是否是这种情况。
.htaccess
这是一个示例 .htaccess 文件:
<IfModule mod_php5.c>
php_value upload_max_filesize 70M
php_value post_max_size 80M
php_value memory_limit 90M
php_value max_execution_time 240
php_value max_input_time 240
</IfModule>
每个目录的 php.ini
上述设置也可以在每个目录的 php.ini 文件中更改。同样,执行此操作的能力可能会受到您的托管服务提供商的限制。有关这方面的更多信息,请参见此处:
http://www.askapache.com/php/custom-phpini-tips-and-tricks.html
多变:
有关 PHP_INI_* 模式的说明,其中显示了可以设置配置指令的位置,请参见此处:
http://php.net/manual/en/configuration.changes.modes.php
【讨论】:
post_max_size。请在此处查看这些文档:php.net/manual/en/ini.core.php#ini.post-max-size 我已更新答案以使其更清晰。