我有一个网站托管在我无法访问的PC上。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。

每次我尝试上传文件时,都会收到一个错误,声称文件超过了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改。htaccess文件,我没有访问权限,所以这将不起作用。其他人建议我添加一个自定义的php.ini文件到我的根目录,但这并不奏效。还有其他建议吗?


当前回答

由于全局更改有一定风险,因此我尝试为单个脚本big_file_upload.php增加最大上传值。出于某种原因,ini_set没有帮助。经过一番研究,我得出了这个结论。把它放在。htaccess(除非通过AccessFileName更改名称)

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

为我工作。

其他回答

好吧,我想在这里补充我的意见。

I'm using shared webhosting and I tackled this problem many times, tried to resolve it on my own but to no avail. Finally I managed to resolve it through checking various web sources and contacting my hosting service provider. My questions were "How can I change php value memory_limit in shared webhosting?", "How can I change php value upload_max_filesize in shared webhosting?", "How can I change php value max_input_vars in shared webhosting?", "How can I change php value max_execution_time in shared webhosting?", "How can I change php value max_input_time in shared webhosting?" and many more by configuring or changing php.ini or .htaccess file. I tried to change them but problems arose. Finally I contacted my hosting provider, and it turns out that I set my php to native, they changed it to php 5.6, here is their answer:

“你的PHP被设置为‘原生’模式,这意味着你不能重写 这些值。我已经把你的身高改成5.6了,所以你应该可以 走吧。”

之后,我通过ftp Filezilla连接我的网站,也别忘了让你的ftp服务显示隐藏文件,和你的本地计算机这样做,因为。htaccess文件隐藏在我的本地笔记本电脑和我的网站。它可以在public_html文件夹中找到,我只是下载了它,并在文件末尾添加了以下代码,然后将其上传到服务器:

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 64M
php_value max_input_vars 1800
php_value max_execution_time 300
php_value max_input_time 300

暂时一切正常,如果有什么问题请写在这里并警告我,我可以更改上面显示的代码。顺便说一下,我也上传了一些图片,展示了变化。

还有一件事,我几乎忘记了在你的共享网络托管服务上安装ZipArchive,我通过通过我的cpanel进入php设置,单击php选择器扩展,然后勾选zip部分,这就是全部。

谢谢。

PS:我对好的做法持开放态度,如果你在这里看到任何不好的做法,请告诉我,我会尝试改变它们。谢谢。

你需要在php.ini中设置upload_max_filesize和post_max_size的值:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

修改php.ini文件后,需要重新启动HTTP服务器才能使用新的配置。

如果您不能更改php.ini,那么您就不走运了。您不能在运行时更改这些值;如果上传的文件大于php.ini中指定的值,那么在执行到调用ini_set时将会失败。

请参阅核心php.ini指令的描述。

也许这应该是对@seanb123和@Fredrick Gauss的评论,但对我来说,在使用PHP 7的Drupal 8.1中,我需要修改的文件位于这里:

/etc/php/7.0/apache2/php.ini

我修改了大约四个其他的php.ini文件,包括一个我的系统称为“加载配置文件”(php -i | grep -i“加载配置文件”)和一个在info.php页面上找到的文件,但它们都没有帮助。找到正确路径的关键是在2012年的一个遗址上发现的。他们说路径“/etc/php5/apache2/php.ini”即使在当时也被弃用了,但它给了我在哪里找到它的线索。PHP7与PHP5略有不同,但概念是相同的。

也许这能帮到像我这样无助的笨蛋。

话虽如此,在我的情况下,OP的答案是,对盒子有管理特权的人必须这么做。

帮助我的网站是:http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

在PHPMyAdmin中导入文件大小限制

编辑: 我写给自己的信全文如下:

要更改最大上传大小,请编辑upload_max_filesize和 (如果需要?/etc/php/7.0/apache2/php.ini中的post_max_size 旧版本:/etc/php5/apache2/php.ini) /etc/init.d /输入重启

编辑: 由于您正在导入大文件,您可能需要更改处理它们的超时时间。在我的例子中,名为“config.default.php”的文件在/usr/share/phpmyadmin/libraries/config.default.php中找到了变量$cfg['ExecTimeLimit'] = 300; 比如,我把我的价格改成了900美元,因为我进口了一大笔商品。 之后你需要重新启动apache

您可以通过.htaccess文件更改它。

.htaccess文件与你的.php文件存储在同一个目录下。它们修改该文件夹和所有子文件夹的配置。你只需在你选择的目录中创建一个.htaccess文件(如果存在的话可以修改它)就可以使用它们。

下面的代码可以提高上传限制(如果服务器提供商允许通过.htaccess修改PHP配置)。

php_value upload_max_filesize 40M
php_value post_max_size 42M

很多次我都注意到共享主机的站点不允许更改php.ini文件中的设置。甚至根本不能创建.htaaccess文件。在这种情况下,人们可以尝试以下事情

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);