當前位置:首頁 » 編程語言 » 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

熱點內容
淘寶分銷一鍵上傳 發布: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
奧迪配置怎麼比較 發布:2024-11-19 12:07:33 瀏覽:522