Я пытаюсь предоставить загрузку с X-Sendfile на моем сервере nginx. У меня самая актуальная версия nginx и php5.nginx php x-sendfile загрузить 0kb
Файл с запрошенным файлом существует, но он просто загружает пустой файл 0kb без содержимого, но с правильным именем файла. Я не делаю никакого вывода до начала загрузки.
В начале у меня был выход после «загрузки», и все, что я выводил, было доступно для чтения в файле.
Я заглянул в документ nginx http://wiki.nginx.org/XSendfile и установил папку, содержащую файл загрузки, в «внутренний».
Вот мой код:
if(file_exists($filepath))
{
header('X-Sendfile: ' . $filepath);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
}
PS: Там нет никаких сообщений об ошибках в "/var/log/nginx/error.log".
Edit:
if(file_exists($filepath))
{
header('Cache-Control: public, must-revalidate');
header('Pragma: no-cache');
header('Content-Type: application\zip');
header('Content-Length: ' .(string)(filesize($filepath)));
header('Content-Disposition: attachment; filename='.$filename.'');
header('Content-Transfer-Encoding: binary');
header('X-Accel-Redirect: /dl/' . $filename);
}
Edit 2:
nginx.cong:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
gzip on;
gzip_types text/plain application/xml;
gzip_disable "MSIE [1-6]\.";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 127.0.0.1;
listen 80;
server_name XXX.XXX.XXX.XXX;
root /home/uploader/;
location/{
try_files $uri $uri/ /index.html;
}
location /Download/ {
internal;
alias /dl/;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
}
}
Вы должны использовать 'X-Accel-Redirect: URI'. И обратите внимание, что nginx ожидает URI, а не путь к файлу. –
Я отредактировал мое сообщение, как мой код выглядит сейчас, но он все еще не работает, мои файлы сейчас 1kb. с содержанием: \t
\t – RaverTinyИ что в Nginx конфигурации? –