php直接下载
⑴ 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