Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php nginx上传大文件_Php_Nginx_File Upload - Fatal编程技术网

使用php nginx上传大文件

使用php nginx上传大文件,php,nginx,file-upload,Php,Nginx,File Upload,我想通过一个大约400万的PHPAPI上传一个相对较大的文件。 在php5脚本的开头,我设置了以下选项: ini_set("upload_max_filesize","100M"); ini_set("post_max_size","108M"); ini_set("max_execution_time","3000"); ini_set("memory_limit","500M"); ini_set("max_input_time","3000"); ini_set("output_buffe

我想通过一个大约400万的PHPAPI上传一个相对较大的文件。 在php5脚本的开头,我设置了以下选项:

ini_set("upload_max_filesize","100M");
ini_set("post_max_size","108M");
ini_set("max_execution_time","3000");
ini_set("memory_limit","500M");
ini_set("max_input_time","3000");
ini_set("output_buffering","0");
另外,我将以下参数添加到nginx配置文件:

client_max_body_size 500M; 
fastcgi_read_timeout 600s;
keepalive_timeout 3000; 
client_header_timeout 1000m;
client_body_timeout 1000m;
client_header_buffer_size 2k;
这稍微改善了情况,因为我犯了这个错误:

POST Content-Length of 78014353 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
现在,当我尝试使用Slim framework的moveTo函数移动未上载的文件时,我的错误会在稍后发生

error exception 'RuntimeException' with message '  is not a valid uploaded file'
你有什么建议,我可以尝试修复它吗

编辑:


我忘了准确地说,只要要上传的存档文件很小,上传效果就很好我最终找到了一个相对堆栈溢出问题的解决方案:

因此,我的工作就是遵循杰基斯的建议:

按照以下步骤解决此问题:

评估phpinfo; 在phpinfo输出中搜索“扫描此目录以查找其他.ini文件”文本 它将是这样的/etc/php5/apache2/conf.d 在目录中创建user.ini文件/etc/php5/apache2/conf.d/user.ini 使用此ini文件进行自定义设置。 重新启动服务器 这是因为:

服务器上安装的最新php版本不允许全局 执行时间、最大上载文件大小、最大发布文件大小等设置 要更改的尺寸等


是否检查了目标文件夹权限?你对MIME类型或文件扩展名有任何验证吗?你需要养成这样的习惯,帮助你解决问题。您将获得积分,并鼓励其他人帮助您。我检查文件夹权限,但如何检查是否对MIME类型或文件扩展名进行了验证?我认为您无法在脚本中设置此项。因为这必须首先通过PHP-FPM。因此,设置首先需要在php.ini中,您是否重新启动了/etc/init.d/nginx?
>>php5-fpm -i | grep "post_max"
post_max_size => 8M => 8M
>>php5-fpm -i | grep "php.ini"
Configuration File (php.ini) Path => /etc/php5/fpm
Loaded Configuration File => /etc/php5/fpm/php.ini
root@test2:~# php5-fpm -i | grep ".ini"
Configuration File (php.ini) Path => /etc/php5/fpm
Loaded Configuration File => /etc/php5/fpm/php.ini
Scan this dir for additional .ini files => /etc/php5/fpm/conf.d
Additional .ini files parsed => /etc/php5/fpm/conf.d/05-opcache.ini,
/etc/php5/fpm/conf.d/10-mysqlnd.ini,
/etc/php5/fpm/conf.d/10-pdo.ini,
/etc/php5/fpm/conf.d/20-curl.ini,
/etc/php5/fpm/conf.d/20-gd.ini,
/etc/php5/fpm/conf.d/20-json.ini,
/etc/php5/fpm/conf.d/20-mcrypt.ini,
/etc/php5/fpm/conf.d/20-mosquitto.ini,
/etc/php5/fpm/conf.d/20-mysql.ini,
/etc/php5/fpm/conf.d/20-mysqli.ini,
/etc/php5/fpm/conf.d/20-pdo_mysql.ini,
/etc/php5/fpm/conf.d/20-readline.ini
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
Supported handlers => cdb cdb_make db4 inifile flatfile qdbm 
com_init_db => 0
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException