php写curl下载文件 不是下载到服务器 让浏览器弹出下载文件,在本地下载 求高手解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php写curl下载文件 不是下载到服务器 让浏览器弹出下载文件,在本地下载 求高手解答相关的知识,希望对你有一定的参考价值。

参考技术A 这样的用header吧
$file=‘下载地址’;
if (file_exists($file))
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
本回答被提问者和网友采纳

浏览器下载 PHP 文件而不是执行它们。 Webmin + Nginx

【中文标题】浏览器下载 PHP 文件而不是执行它们。 Webmin + Nginx【英文标题】:Browser downloading PHP files instead of executing them. Webmin + NGinx 【发布时间】:2019-04-22 09:24:22 【问题描述】:

问题

我今天尝试从 PHP 7.0 升级到 7.2,结果导致服务器上的网站通过浏览器下载而不是正常执行。

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get purge php7.0 php7.0-common
sudo apt-get install php7.2-curl php7.2-xml php7.2-zip php7.2-gd php7.2-mysql php7.2-mbstring

我的问题

谁能给我一些如何调试的例子?还有关于可能发生的事情的任何其他见解?

我的理论

从技术上讲,我不知道是什么原因造成的,但我的经验告诉我,这是一个文件中的一行,来自 NGinx,需要编辑。

我的尝试

我发现这个问题在 SO 上很常见。但是解决方案缺少关键信息,例如文件路径,或者它们引用的文件路径在我的系统上不存在,或者建议的解决方案无法解决问题。

许多文章提到了 PHP FPM 和/或 FastCGI 的配置。但我无法确定如何确认这些是否已安装/运行,以及标准 Web 服务器的正确配置是什么样的。

有什么帮助

我确实将我的 /etc/nginx/nginx.conf 文件从 default_type application/octet-stream; 更新为 default_type text/html;,这已经停止了文件的下载,但导致出现空白页。包括我的phpinfo.php

我的环境

AWS EC2 小型 Ubuntu 18.04 NGinx 1.10.3 Webmin 虚拟机

【问题讨论】:

我在 apache 环境中遇到过几次同样的问题。我不太了解 nginx 的想法,但请检查 vhost 文件以及您的 htaccess。大多数时候,这就是问题所在。 谢谢,但只有 Apache 使用 .htaccess,我正在运行 NGinx,它使用全局和站点特定的 nginx.conf 文件。 您能否通过检查我的 vhosts 文件详细说明您的意思? 试试这个:***.com/questions/25591040/… 对不起兄弟。请尝试在serverfault.com 上发布您的问题。 *** 比服务器问题更适合编程问题。 【参考方案1】:

你的域配置NGINX...错了...

错过了 FastCGI 参数 ...

例子:

location ~ [^ /] \. php (/ | $) 
fastcgi_split_path_info ^ (. + \. php) (/.+) $;
fastcgi_index index.php;
fastcgi_pass unix: /var/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $ fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

祝你好运!发送有关您的进度的消息...

【讨论】:

以上是关于php写curl下载文件 不是下载到服务器 让浏览器弹出下载文件,在本地下载 求高手解答的主要内容,如果未能解决你的问题,请参考以下文章

如何与 PHP 并行进行 cURL 下载和输出?

cURL下载Zip文件 - “参数不是有效的文件句柄资源”

windows 的php环境下 用curl远程下载速度慢

下载文件到服务器 PHP

浏览器下载 PHP 文件而不是执行它们。 Webmin + Nginx

cURL + 通过浏览器下载文件