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