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下载文件 不是下载到服务器 让浏览器弹出下载文件,在本地下载 求高手解答的主要内容,如果未能解决你的问题,请参考以下文章