Nginx正在破坏下载的文件

我与我的应用程序与PHP和Laravel框架的问题。

问题是file upload/下载。

当我提交文件到服务器它存储他们好,但是当我尝试下载大于100KB上传的文件,它只是下载它的一部分,使其损坏。

尝试了很多选项,通过调整php.ini设置,nginx设置,仍然无法解决它。

这里是我目前的configurationnginx:

nginx.conf

user developer; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

现在这里是我的nginx网站configuration:

 server { listen 8002 default_server; server_name localhost 172.20.74.229 cadeco.dev; root /var/www/current/cadeco/public; index index.php index.html index.htm; access_log /var/log/nginx/cadeco.dev-access.log; error_log /var/log/nginx/cadeco.dev-error.log error; charset utf-8; include h5bp/basic.conf; location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { log_not_found off; access_log off; } location ~ /\. { deny all; access_log off; log_not_found off; } location / { try_files $uri $uri/ /index.php$is_args$args; } sendfile off; client_max_body_size 100m; location ~ ^/index\.php(/|$) { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; fastcgi_param PATH_INFO $fastcgi_path_info; } } 

那么这里是来自(/etc/php5/fpm/php.ini)的php.ini的相关设置:

 max_execution_time = 30 max_input_time = 60 memory_limit = 512M upload_max_filesize = 50M max_file_uploads = 20 

最后这里是我的PHP脚本,下载文件:

 public function downloadFile($file) { $filePath = storage_path('app/uploads/').$file; if (Storage::exists($file)) { return response()->download($filePath); } Flash::error('File does not exists!'); return redirect()->back(); } 

提前感谢您的帮助! :d

我想到了!。

我检查了这个nginx网站的错误日志,发现这个错误:

 *10 open() "/var/lib/nginx/fastcgi/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 172.20.73.101, server: localhost, request: XXXXX 

这个错误发生是因为前一段时间我们把用户改成www-data来启动像php-fpm这样的服务,但是我忘了把它改成nginx。

将用户更改为www-data,现在一切正常。

谢谢!