当前位置:首页 » 编程语言 » php直接下载

php直接下载

发布时间: 2024-11-19 11:37:43

php实现文件下载代码

简单的文件下载只需要使用HTML的连接标记<a>,并将属性href的URL值指定为下载的文件即可。所示:

<a href=”http://www.*****.net/download/book.rar”>下载文件</a>

如果通过上面的代码实现文件下载,只能处理一些浏览器不能默认识别的MIME类型文件,例如当访问book.rar文件时,浏览器并没有直接打开,而是弹出一个下载提示框,提示用户“下载”还是“打开”等处理方式。但如果需要下载后缀名为.html的网页文件、图片文件及PHP程序脚本文件等,使用这种连接形式,则会将文件内容直接输出到浏览器中,并不会提示用户下载。

为了提高文件的安全性,不希望在<a>标签中给出文件的链接,则必须向浏览器发送必要的头信息,以通知浏览器将要进行下载文件的处理。PHP使用header()函数发送网页的头部信息给浏览器,该函数接收一个头信息的字符串作为参数。文件下载需要发送的头信息包括以下三部分,通过调用三次header()函数完成。以下载图片test.gif为例,需要发送的头信息的所示:

header(‘Content-Type:imge/gif'); //发送指定文件MIME类型的头信息
header(‘Content-Disposition:attachment; filename=”test.gif”‘); //发送描述文件的头信息,附件和文件名
header(‘Content-Length:3390′); //发送指定文件大小的信息,单位字节

如果使用header()函数向浏览器发送了这三行头信息,图片test.gif就不会直接在浏览器中显示,而让浏览器将该文件形成下载的形式。在函数header()中,“Content-Type”指定了文件的MIME类型,“Content_Disposition”用于文件的描述,值“attachment;
filename=”test.gif””说明这是一个附件,并且指定了下载后的文件名,“Content_Length”则给出了被下载文件的大小。

设置完头部信息以后,需要将文件的内容输出到浏览器,以便进行下载。可以使用PHP中的文件系统函数将文件内容读取出来后,直接输出给浏览器。最方便的是使用readfile()函数,将文件内容读取出来直接输出。下载文件test.gif的所示:

<?php
$filename = "test.gif";
header('Content-Type:image/gif'); //指定下载文件类型
header('Content-Disposition: attachment; filename="'.$filename.'"'); //指定下载文件的描述
header('Content-Length:'.filesize($filename)); //指定下载文件的大小

//将文件内容读取出来并直接输出,以便下载
readfile($filename);
?>

上面如果碰到中文名字就会无法正常下载了,对于中文名字下载文件我又找到一个文件下载实例代码

<?php
header("Content-type:text/html;charset=utf-8");
// $file_name="cookie.jpg";
$file_name="圣诞狂欢.jpg";
//用以解决中文不能显示出来的问题
$file_name=iconv("utf-8","gb2312",$file_name);
$file_sub_path=$_SERVER['DOCUMENT_ROOT']."marcofly/phpstudy/down/down/";
$file_path=$file_sub_path.$file_name;
//首先要判断给定的文件存在与否
if(!file_exists($file_path)){
echo "没有该文件文件";
return ;
}
$fp=fopen($file_path,"r");
$file_size=filesize($file_path);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$file_size);
Header("Content-Disposition: attachment; filename=".$file_name);
$buffer=1024;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
fclose($fp);
?>

header("Content-type:text/html;charset=utf-8")的作用:在服务器响应浏览器的请求时,告诉浏览器以编码格式为UTF-8的编码显示该内容

关于file_exists()函数不支持中文路径的问题:因为php函数比较早,不支持中文,所以如果被下载的文件名是中文的话,需要对其进行字符编码转换,否则file_exists()函数不能识别,可以使用iconv()函数进行编码转换

$file_sub_path() 我使用的是绝对路径,执行效率要比相对路径高

Header("Content-type: application/octet-stream")的作用:通过这句代码客户端浏览器就能知道服务端返回的文件形式
Header("Accept-Ranges: bytes")的作用:告诉客户端浏览器返回的文件大小是按照字节进行计算的
Header("Accept-Length:".$file_size)的作用:告诉浏览器返回的文件大小
Header("Content-Disposition: attachment; filename=".$file_name)的作用:告诉浏览器返回的文件的名称

以上四个Header()是必需的
fclose($fp)可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

⑵ 如何下载PHP语言网站源码

在PHP的官方网站可以下载源码(www.php.net),进入之后选择DOWNLOAD里面的Complete Source Code就能下载,具体的页面地址是:http://www.php.net/get/php-5.2.9.tar.bz2/from/a/mirror

⑶ php下载安装教程(php安装包下载)

linuxyum安装php7.3

先安装前面的教程,再安装后面的

参考教程1:

参考教程2:

安装PHP

1、安装PHP73

1.1、卸载旧版本PHP

yumremovephp*

1.2、安装EPEL:

sudoyuminstallepel-release

1.3、安装remi(选一个):

sudorpm-Uvh

rpm-Uvh

1.4、查看目前有php的什么版本(可忽略)

sudoyumlistphp*

1.5、列出所有的php相关的rpm包(可忽略)

rpm-qa|grepphp

1.6、删除php相关的rpm包(一次只能删除一个)(可忽略)

rpm-ephp72w-mysqlnd-7.2.17-1.w7.x86_64

1.7、列出remi仓库下所有PHP7.3可用模块。(可忽略)

yum--enablerepo=remi-php73searchphp|grepphp73

1.8、安装PHP7.3

yum--enablerepo=remi-php73installphp

1、安装PHP7.3:

(解决yum安装apache关联不了PHP的问题,用以下命令安装)

yum--enablerepo=remi-php73installphp

安装模块

yum--enablerepo=remi-php73installphp73-php-fpmphp73-php-cliphp73-php-bcmathphp73-php-gdphp73-php-jsonphp73-php-mbstringphp73-php-mcryptphp73-php-mysqlndphp73-php-opcachephp73-php-pdophp73-php-pecl-cryptophp73-php-pecl-mcryptphp73-php-pecl-geoipphp73-php-recodephp73-php-snmpphp73-php-soapphp73-php-xml

2、设置开机启动、运行服务:

systemctlenablephp73-php-fpm

systemctlstartphp73-php-fpm

3、查找php.ini位置:

find/etc/opt/remi/php73-namephp.ini

/etc/opt/remi/php73/php.ini

找到apache的配置文件:httpd.conf

sudofind/-namehttpd.conf

位置如下:

/etc/httpd/conf/httpd.conf

5、PHP日常操作

systemctlrestartphp73-php-fpm#重启

systemctlstartphp73-php-fpm#启动

systemctlstopphp73-php-fpm#关闭

systemctlstatusphp73-php-fpm#检查状态

php-m#查看PHP已安装拓展模块

php-v#查看PHP版本

mysql下载安装和PHP下载安装问题这几天在网上找了血关于MYSQL的教程.但怎么看都不行.希望高手远程教教我

配了好多次,按这个顺序这种配置一般都没问题,不要觉得麻烦,细心一点15分钟就可以配好,有问题可以给我留言。

首先:Apache的安装配置(版本:apache_2.2.6-win32-x86-no_ssl)

直接按默认安装,安装时要关闭浏览器跟下载软件,否则安装完成后服务器不能启动,报不能绑定80端口的错误。启动后在地址栏中输入“”或“”,如果可以看到"ItWorks",说明安装成功。

如果需要更改默认路径,打开“C:.2conf”目录下的httpd.conf文件,查找“DocumentRoot(这里有两处都必须改,一处不是以此开头),将其路径修改成需要设置的访问路径,这里改为“D:/masterphp”(注意斜杠方向,与路径方向不同)。

第二:PHP的安装配置(版本:php-5.2.5-Win32)

下载后直接解压就可以了,这里我们解压到“C:ProgramFilesphp-5.2.5-Win32”目录下。下面将PHP和Apache服务期连接:

(1)修改“C:ProgramFilesphp-5.2.5-Win32”目录下"php.ini-recommened"文件名,改成"php.ini"

(2)将“php.ini”文件拷贝到Apache目录下,即“C:.2”目录下

(3)打开php.ini文件,修改以下几个关键字

查询extension_dir="./"修改为

extension_dir="C:ProgramFilesphp-5.2.5-Win32ext"

如果在显示中文的时候出现乱码,可以查询;default_charset="iso-8859-1"修改为default_charset="gbk",注意要去掉前面的“;”

很多时候需要利用session对象来存储数据,如session身份验证、设计购物车等,因此还必须要找到另外一个属性,即把

;session.save_path="/tmp"修改为

session.save_path="C:/ProgramFiles/php-5.2.5-Win32/session"

(session文件夹需手工创建,也可以创建其他的目录)

查找display_errors和cgi.force_redirect,原始设置为

display_errors=off

;cgi.force_redirect=1

修改为

display_errors=ON

cgi.force_redirect=0

(display_errors属性表示在运行时如果发生错误,是否会显示错误信息。而cgi.force_redirect为0表示强制不运行在CGI模式下)

再将"C:/ProgramFiles/php-5.2.5-Win32"下的php5ts.dll文件拷贝到系统的windows/system32(WindowsXP);接着将"C:/ProgramFiles/php-5.2.5-Win32"下的php5apache2_2.dll(这是Apache的版本号,如果是2.0版本的则复制php5apache2.dll)文件复制到"C:.2moles"下,然后将下面的一段代码插入到httpd.conf文件的最后

LoadMolephp5_molemoles/php5apache2_2.dll

AddTypeapplication/x-httpd-php.php

如果还想让Apache执行其他后缀名,则可添加其他的类型,如下所示

AddTypeapplication/x-httpd-php.php4

AddTypeapplication/x-httpd-php.php3

AddTypeapplication/x-httpd-php.phtml

AddTypeapplication/x-httpd-php-souce.phps

Apache默认的连接文件名为"index.html",即如果在地址栏中输入""和输入""显示结果一致,如果想增加其他的默认连接文件名,则在httpd.conf中找到"DirectoryIndex",原始设置如下:

DirectoryIndexindex.htmlindex.html.var

如果想支持default.php,则修改成如下格式:

DirectoryIndexdefault.phpindex.htmlindex.html.var

为了测试PHP配置是否成功,打开记事本输入以下代码:

?php

phpinfo()

?

将该代码保存成version.php,拷贝到"d:master.php"目录下,在地址栏输入"",如果一切配置正常,可以看到PHP的各种信息

第三:MySQL的安装配置(版本:mysql-5.0.45-win32)

选择完全安装,点下一步,其中有个密码要设置。

启动后若出现mysql标志,则表示安装成功。

MySQL安装成功后还需要同PHP连接上,因此,还需要进一步配置。

打开“C:.2”目录下php.ini文件,查找"MySQL",修改以下几个属性

原始设置为:

mysql.default_port=

mysql.default_host=

mysql.default_user=

mysql.default_password=

修改为:

mysql.default_port=3306(网络端口,安装时默认设置为3306)

mysql.default_host=localhost(default_host为服务期名称,localhost表示本地机器)

mysql.default_user=root(default_user表示用户名,root是默认的用户名)

mysql.default_password=123456(即安装MySQL时输入的密码)

修改了以上属性后,还需要启动PHP对MySQL支持模块,在php.ini文件中查找"extension=php_mysql.dll"

原始设置为:

;extension=php_mysql.dll

修改为

extension=php_mysql.dll(即把分号去掉)

再将php_mysql.dll(php)和libmysql.dll(php)文件拷贝至c:winntsystem32中。

最后测试MySQL是否安装成功,测试代码如下:

?php

$link=mysql_connect('localhost','root',�');

if(!$link)echo"失败!";

elseecho"成功!";

mysql_close();

?

在地址栏输入"",如果连接成功,则会显示“成功!”

最后,把phpmyadmin解压到web站点内,直接输入回车即可进入。

怎么安装PHP环境?

LAMP/LNMP环境搭建

一.检查系统环境

1.确认centos版本

[root@localhost~]#cat/etc/redhat-release

2.检查是否安装过apache

rpm-qa|grephttpd

或者:

apachectl-v

或者:

httpd-v

3.检查是否安装过Mysql

servicemysqldstart

如果未被识别则没有安装

如果系统安装过,或者安装失败,清理一下系统

4.清理Mysql痕迹

yumremovemysql

rm-f/etc/my.cnf

5.卸载Apache包

rpm-qa|grephttpd

注意:如果是新的系统或者你从来没有尝试安装过,则以上步骤省略

二.安装Apache、PHP、Mysql

停止防火墙服务

[root@localhost~]#systemctlstopfirewalld.service

禁用防火墙开机启动服务

[root@localhost~]#systemctldisablefirewalld.service

1.安装apache

[root@localhost~]#yum-yinstallhttpd

2.安装php

[root@localhost~]#yum-yinstallphp

3.安装php-fpm

[root@localhost~]#yum-yinstallphp-fpm

4.安装Mysql

[root@localhost~]#yum-yinstallmysql

5.安装mysql-server

[root@localhost~]#yuminstallmariadb-server

CentOS7+版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了,entos7配置教程上,大多都是安装mariadb,因为centos7默认将mariadb视作mysql。

因为mysql被oracle收购后,原作者担心mysql闭源,所以又写了一个mariadb,这个数据库可以理解为mysql的分支。如果需要安装mariadb,只需通过yum就可。

6.安装php-mysql

[root@localhost~]#yum-yinstallphp-mysql

三.安装基本常用扩展包

1.安装Apache扩展包

yum-yinstallhttpd-manualmod_sslmod_perlmod_auth_mysql

2.安装PHP扩展包

yum-yinstallphp-gdphp-xmlphp-mbstringphp-ldapphp-pearphp-xmlrpcphp-devel

3.安装Mysql扩展包

yum-yinstallmysql-connector-odbcmysql-devellibdbi-dbd-mysql

四.配置Apache、mysql开机启动

重启Apache、mysql服务(注意这里和centos6有区别,Cenots7+不能使用6的方式)

systemctlstarthttpd.service#启动apache

systemctlstophttpd.service#停止apache

systemctlrestarthttpd.service#重启apache

systemctlenablehttpd.service#设置apache开机启动

重启数据库

#启动MariaDB

[root@localhost~]#systemctlstartmariadb.service

#停止MariaDB

[root@localhost~]#systemctlstopmariadb.service

#重启MariaDB

[root@localhost~]#systemctlrestartmariadb.service

#设置开机启动

[root@localhost~]#systemctlenablemariadb.service

五.配置Mysql

初次安装mysql是没有密码的,我们要设置密码,mysql的默认账户为root

方式1:设置MySQL数据root账户的密码:

[root@localhost~]#mysql_secure_installation

当出现如下提示时候直接按回车:

Entercurrentpasswordforroot

出现如下再次回车:

Setrootpassword?[Y/n]

出现如下提示输入你需要设置的密码,这里输入了root,输入密码是不显示的,回车后再输入一次确认:

Newpassword:

接下来还会有四个确认,分别是:

Removeanonymoususers?[Y/n]

Disallowrootloginremotely?[Y/n]

?[Y/n]

Reloadprivilegetablesnow?[Y/n]

直接回车即可。

方式2:进入mysqlmysql-r

修改mysql密码:setpasswordfor'root'@'localhost'=password('root');

mysql授权远程连接(navicat等):grantallon*.*torootidentifiedby'root'

六.测试环境

我们在浏览器地址栏输入,正常显示,说明我们的lamp环境搭建成功

七.安装nginx

yuminstallyum-priorities-y

wget

rpm-ivhnginx-release-centos-7-0.el7.ngx.noarch.rpm

yuminstallnginx

Nginx版本号可变更版本

八.配置nginx

1.nginx启动,停止,重启

systemctlstartnginx.service#启动nginx

systemctlstopnginx.service#停止

systemctlrestartnginx.service#重启

systemctlenablenginx.service#设置开机启动

更改nginx端口号(根据自己需求)

cd/etc/nginx/conf.d/

vimdefault.conf

把listen80改成listen81

3.访问即可看到nginx首页

安装完成访问时候需要启动php-fpm,不重启访问会出现下载文件,重启命令如下

systemctlstartphp-fpm.service#启动php-fpm

systemctlenablephp-fpm.service#设置开机启动

4.更改nginx配置文件识别php

vi/etc/nginx/conf.d/default.conf,把之前的#给去掉就可以了,顺手改一下

location~.php${

roothtml;

fastcgi_pass127.0.0.1:9000;

fastcgi_indexindex.php;

fastcgi_paramSCRIPT_FILENAME/usr/share/nginx/html/$fastcgi_script_name;

includefastcgi_params;

}

方法二安装nginx

yuminstallnginx

启动nginx,并设置为开机启动

systemctlstartnginx

systemctlenablenginx

vim/etc/nginx/conf.d/default.conf

5.在/usr/share/nginx/html中新建一个test.php

访问即可看到php页面

修改完成配置记得启动apache和php-fpm哦!

九.负载配置

upstreamsite{

server172.16.170.138;

server172.16.170.139;

}

server{

listen80;

server_namelocalhost;

#charsetkoi8-r;

#access_log/var/log/nginx/log/host.access.logmain;

location/{

root/usr/share/nginx/html;

indexindex.htmlindex.htm;

proxy_pass;

}

apache默认目录/var/www/html

nginx默认目录/usr/share/nginx/html

升级php版本

centos7默认安装php是5.4

查看yum的可安装的php版本列表

yumprovidesphp

开始升级PHP更新源:

rpm-Uvh

rpm-Uvh

yumremovephp-common-y#移除系统自带的php-common

php72版本

yuminstall-yphp72wphp72w-opcachephp72w-xmlphp72w-mcryptphp72w-gdphp72w-develphp72w-mysqlphp72w-intlphp72w-mbstring

php56版本

yuminstall-yphp56wphp56w-opcachephp56w-xmlphp56w-mcryptphp56w-gdphp56w-develphp56w-mysqlphp56w-intlphp56w-mbstring#安装依赖包

查看php版本

php-v

安装phpfpm:

yuminstallphp72w-fpm

yumprovidesphp-fpm#因为我是准备搭建lnmp,所以安装php-fpm,这里会提示多个安装源,选择5.6版本的安装就可以了

yuminstallphp56w-fpm-5.6.31-1.w7.x86_64-y

systemctlstartphp-fpm.service【启动】

sys

热点内容
外网服务器搭建vpn 发布:2024-11-19 13:20:39 浏览:370
淘宝分销一键上传 发布:2024-11-19 13:18:01 浏览:179
ftpgetfilesize 发布:2024-11-19 13:12:59 浏览:959
14位数密码有多少种可能 发布:2024-11-19 12:48:11 浏览:110
删除引索的sql语句 发布:2024-11-19 12:39:13 浏览:64
智能车算法 发布:2024-11-19 12:34:49 浏览:777
linuxredis启动脚本 发布:2024-11-19 12:31:35 浏览:955
刀片机电脑系统在服务器端 发布:2024-11-19 12:27:16 浏览:861
设备监控源码 发布:2024-11-19 12:26:21 浏览:922
服务器主板是什么样子 发布:2024-11-19 12:08:19 浏览:889