【问题标题】:echo $_FILES['data-file']['tmp_name']; die; file name is not printed if size more then 128M in PHPecho $_FILES['data-file']['tmp_name'];死;如果 PHP 中的大小超过 128M,则不会打印文件名
【发布时间】:2015-11-12 06:23:28
【问题描述】:

我尝试上传 300 MB 的文件。但未上传,现在显示任何错误。 php.ini 文件中的变量值是

post_max_size 800M
upload_max_filesize 750M
memory_limit 2048M
max_execution_time  17100
max_input_time 17100

如果我尝试通过 echo $_FILES['data-file']['tmp_name'] 打印文件的 tmp 名称;死;没有显示页面重定向到主页。但是对于不到 128M 它会像这样显示 /tmp/phpShle。

【问题讨论】:

  • 你可以看到你有upload_max_filesize 750M,你不能上传超过这个。你必须修改这个
  • 设置错误报告(E_ALL);要显示错误 php.net/manual/en/function.error-reporting.php ,请检查您的 apache 日志以及应用程序日志(如果有)
  • 这可能是服务器上tmp目录的大小为128M。因为只显示较小大小的文件 tmp 名称,而不显示较大的文件大小名称。
  • 我试过 error_reporting(E_ALL);什么都没有显示。页面重定向到主页。

标签: php tmp


【解决方案1】:

我的问题解决了。我需要在 modsec2.user.conf 文件中设置这些变量

SecRequestBodyLimit 1073741824
SecRequestBodyNoFilesLimit 1073741824

这是一个 apache 服务器文件。并且错误显示在 Apache 错误日志中。

【讨论】:

  • 感谢大家的帮助
【解决方案2】:

请写在 .htaccess 上。

<IfModule mod_php5.c>
php_value post_max_size           256M
php_value upload_max_filesize     256M
php_value memory_limit            500M
</IfModule>

这可能会对您有所帮助。干杯:)

【讨论】:

  • 并确保你的服务器的php版本在php5以上
  • 实际上 post_max_size 和所有其他变量都设置在默认的 php.ini 文件中并更新了大小
  • 实时服务器中的这段代码对我有用。您是否在您的实时服务器中尝试过这个?
  • 是的,但在实时服务器上不适合我,它只能在本地服务器上工作
  • 如果这在现场不起作用,那么您必须查看您的 cpanel。
【解决方案3】:

如果您在 LAMP 上,请确保您正在编辑正确的 php.ini 文件。在 LAMP 中,您会找到与 cli 相关的 php.ini 和与 php-apache 相关的 php.ini。要实现上述文件上传场景,您需要编辑/etc/php5/apache2/ 中的php-apache php.ini 文件并重启apache 服务。

如果您在 WAMP 上,它只有一个 php.ini,并且 WAMP 在编辑文件后会自动重新启动服务。所以它应该可以工作。

-或者-

您可以在 web 主目录中编写一个 .htaccess 文件。

重写引擎开启

php_value post_max_size 300M

php_value upload_max_filesize 300M

【讨论】:

  • 托管服务器是 linux。并且默认 php.ini 文件中的所有变量都已更改。我还通过 phpinfo() 检查了这些。
  • 没有在错误日志中显示只有较旧的错误显示 [12-Mar-2015 06:26:01 UTC] PHP 致命错误:
猜你喜欢
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多