本文目錄一覽:
- 1、PHP是什麼?
- 2、php為什麼棄用了mysql
- 3、如何把php5.3版本升級到php5.4或者php5.5
- 4、php環境搭建問題!
- 5、PHP語言是什麼語言,用來做什麼的?
- 6、PHP自定義門面以後顯示錯誤?
PHP是什麼?
PHP(中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。
PHP獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多。
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
PHP在數據庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的數據庫或是數據文件:
Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 Oracle 、PostgreSQL
而在Internet上它也支持了相當多的通訊協議 (protocol),包括了與電子郵件相關的 IMAP,POP3;網管系統 SNMP;網絡新聞NNTP;帳號共用 NIS;全球信息網HTTP及Apache服務器;目錄協議LDAP以及其它網絡的相關函數。
擴展資料:
PHP的特性包括:
1、PHP獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2、PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
3、PHP支持幾乎所有流行的數據庫以及操作系統。
4、PHP可以用C、C++進行程序的擴展。
參考資料:
百度百科–PHP
php為什麼棄用了mysql
PHP提供了三種不同的api連接到MySQL,這三種api是:mysql, mysqli以及PDO擴展。MySql函數是非常受歡迎的,但是官方團隊並不鼓勵再使用它們。在php手冊裡邊,當你看到關於Mysql的函數,會發現都標有紅色的標誌,那意味着它們已經被棄用了。棄用ext/mysql函數不僅安全,而且使用其他數據庫查詢方法可以同樣具有MySQL函數的所有功能。更好的方法是使用PDO代替ext/mysql函數。
以下是PHP里不應該再使用mysql函數的3大原因:
1、mysql函數已在PHP5.5中正式棄用,並將在PHP7中被刪除。
2、mysql函數缺少面向對象的接口。
3、mysql函數不支持以下特性:
不支持非阻塞連續獲取
不支持異步查詢
不支持參數化查詢
不支持存儲過程
不支持多個語句
不支持在MySQL 5.1的中所有功能
不支持加密(SSL)
不支持壓縮
不支持完整的字符集
如何把php5.3版本升級到php5.4或者php5.5
查看官方手冊php5.3到5.4的升級注意事項,更改代碼,上線測試。
php環境搭建問題!
哥,這裡不給放鏈接的。。。。
win7 64bit
一、相關準備:
Apache軟件:httpd-2.4.10-win64-VC11.zip
PHP軟件:php-5.5.17-Win32-VC11-x64.zip
MySQL軟件:mysql-5.6.21-winx64.zip
編譯支持環境: vcredist_x64.exe(VC11)(先安裝)
運行環境目錄:
C:\myenv\apache (Apache)
C:\myenv\php (PHP)
C:\myenv\mysql (MySQL)
C:\myenv\sessiontmp (運行期間session存放目錄,可讀寫)
C:\myenv\ fileuploadtmp (運行期間PHP文件上傳存放目錄,可讀寫)
二、安裝Apache服務
1、解壓httpd-2.4.10-win64-VC11.zip變重命名文件夾為apache,將其複製到C:\myenv\目錄下。
2、編輯C:\myenv\apache\conf\httpd.conf配置文件,主要配置事項如下,紅色字體代表新增:
ServerRoot “c:/myenv/apache”
Listen 80
#加載PHP模塊
LoadModule php5_module C:/myenv/php/php5apache2_4.dll
PHPIniDir “C:/myenv/php” (注意留一個空格)
ServerAdmin 469085313@qq.com
ServerName 127.0.0.1:80
DocumentRoot “c:/myenv/apache/htdocs”
DirectoryIndex index.php index.html
ScriptAlias /cgi-bin/ “c:/myenv/apache/cgi-bin/”
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm
3、啟動Apache服務
管理員身份啟動cmd.exe程序
Start apache in a DOS commdline:
httpd.exe
Install as a service:
httpd.exe -k install
Run ApacheMonitor:
Double click ApacheMonitor.exe
4、測試Apache是否正常服務:
三、安裝PHP服務插件
1、解壓php-5.5.17-Win32-VC11-x64.zip變重命名文件夾為php,將其複製到C:\myenv\目錄下。
2、將C:\myenv\php\php.ini-development配置文件重命名為php.ini配置文件,打開php.ini文件,做如下的配置操作:
;On windows下面的;extension_dir = “ext”
修改為如下:
extension_dir = “C:/myenv/php/ext” 前面的分號;去掉。
開啟相應的擴展庫功能,比如php_mysql.dll等,即將
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_xmlrpc.dll
這些extension前面的分號;去掉。(;代表注釋掉的意思)
配置session文件在服務器上的保存目錄
;session.save_path = “/tmp” 前面的分號;去掉
或修改為session.save_path = “C:/myenv/sessiontmp”(前面的分號;去掉)
配置PHP的文件上傳功能
;upload_tmp_dir =
或修改為upload_tmp_dir = “C:/myenv/fileuploadtmp”(前面的分號;去掉)
配置時間區域
;date.timezone =
修改為date.timezone = Asia/Shanghai (前面的分號;去掉)
PHP5默認MySQL是關閉的,要將C:\myenv\php文件夾下的libenchant_myspell.dll和C:\myenv\php\ext文件夾里的php_mysql.dll考到C:/Windows/System32裡面;
3、測試Apache+php是否安裝成功:
(見本文末尾有代碼)
四、安裝MySQL服務
1、解壓mysql-5.6.21-winx64.zip變重命名文件夾為mysql,將其複製到C:\myenv\目錄下。
2、將C:\myenv\mysql\my-default.ini配置文件重命名為my.ini配置文件,打開my.ini文件,做如下的配置操作:
[client]
#設置mysql客戶端默認字符集
default-character-set = utf8
[mysqld]
#設置mysql的安裝目錄
basedir = C:\myenv\mysql
#設置mysql數據庫的數據存放目錄
datadir = C:\myenv\mysql\data
#設置3306端口
port = 3306
#設置允許最大連接數
max_connections = 200
#設置服務器端字符集
character-set-server = utf8
#創建新表時將使用的默認存儲引擎
default-storage-engine = INNODB
# server_id = …..
3、啟動MySQL
以管理員身份運行cmd.exe,將目錄切換到mysql的bin目錄下,輸入:Mysqld –install,如下圖所示
出現安裝OK後。接着輸入net start mysql 啟動服務
以上表示mysql服務啟動成功
設置密碼root用戶的密碼為root15w05
在cmd中輸入:mysql –u root,如下圖
mysqluse mysql;
mysqlupdate user set password=PASSWORD(“root15w05”) where user=’root’;
mysqlflush privileges;
mysqlquit;
root用戶密碼修改成功!
4、測試Apache+PHP+MySQL運行環境
http:/localhost/testdbconn.php
PHP語言是什麼語言,用來做什麼的?
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
PHP原始為Personal Home Page的縮寫,已經正式更名為 “PHP: Hypertext Preprocessor”。注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問數據庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和數據庫連接,產生簡單的動態網頁程序。
在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔。並且發布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要求增加一些特性。比如循環語句和數組變量等等;在新的成員加入開發行列之後,Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開發布,希望可以透過社群來加速程序開發與尋找錯誤。這個發布的版本命名為 PHP 2,已經有 PHP 的一些雛型,像是類似 Perl的變量命名方式、表單處理功能、以及嵌入到 HTML 中執行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對MySQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI。
ISAPI篩選器
在1997年,任職於 Technion IIT公司的兩個以色列程序設計師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎。而 PHP 也在這個時候改稱為PHP:Hypertext Preprocessor。經過幾個月測試,開發團隊在1997年11月發布了 PHP/FI 2。隨後就開始 PHP 3 的開放測試,最後在1998年6月正式發布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發布後開始改寫PHP 的核心,這個在1999年發布的剖析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。
在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式發布,2004年7月13日則發布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強化的面向對象功能、引入PDO(PHP Data Objects,一個存取數據庫的延伸函數庫)、以及許多效能上的增強。PHP 4已經不會繼續
PHP
更新,以鼓勵用戶轉移到PHP 5。
2008年PHP 5成為了PHP唯一的有在開發的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強化。PHP 6 的開發也正在進行中,主要的改進有移除register_globals、magic quotes 和 Safe mode的功能。
PHP最新穩定版本:5.4.30(2013.6.26)
PHP最新發布的正式版本:5.5.14(2014.6.24)
PHP最新測試版本:5.6.0 RC2(2014.6.03)
2013年6月20日,PHP開發團隊自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修復。需要開發者特別注意的一點是不再支持 Windows XP 和 2003 系統。
2014年10月16日,PHP開發團隊宣布PHP 5.6.2可用。四安全相關的錯誤是固定在這個版本,包括修復cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓勵用戶升級到這個版本
更多盡在;fr=index
PHP自定義門面以後顯示錯誤?
如果您是PHP老手,當然知道當PHP腳本出錯時發生了什麼事情。此時PHP解析器將在屏幕上給出錯誤信息,如 Fatal error: Call to undefined function on line 19 –,因此程序在此處終止。這個信息會嚇到客戶,他可能立即打電話和你進行諮詢。
幸運的是,這裡有解決辦法。PHP擁有內置工具,可以讓開發人員捕捉腳本錯誤然後將它們轉到自定義的錯誤處理器。此時則可以對處理器進行編程顯示更多關於錯誤的詳細信息。還可以將錯誤寫入文件或數據庫以採取補救措施。有時候還可以對處理器編寫程序忽略錯誤消息。
本文中,我將闡述如何使用PHP的錯誤處理API構建用戶自定義的錯誤處理器,並且說明如何以簡單而友好的方式顯示和管理腳本的錯誤信息。
錯誤類型和報告級別
我們從最基本的開始。PHP有三種最基本的錯誤類型,從低級到高級分別為:注意、警告和錯誤(或致命錯誤)。通常情況下,注意和警告不會終止程序;但是致命錯誤則是危險故障(例如,調用一個沒有定義的函數或參考一個不存在的對象),將導致程序中斷。這些錯誤有可能在啟動、解析、編譯或運行時發生。
關鍵字如E_NOTICE, E_ERROR等用於表明錯誤的不同類型和等級。在PHP手冊上可以獲得它們的詳細信息列表。
腳本階段錯誤顯示由error_reporting()函數進行控制。這一函數針對不同的錯誤等級設置不同的參數。表A給出了使用此函數報告警告和致命錯誤的腳本程序。
表A
?php
// display warnings and errors
error_reporting(E_WARNING | E_ERROR);
// this will generate a notice, which will never be displayed
echo $undefinedVar;
// this will generate a fatal error, which will be displayed
callUndefFunc();
?
將表B中的代碼與上面的進行比較發現,Listing B中隱藏錯誤信息甚至隱藏致命信息,使得錯誤信息不會被顯示出來。
表B
?php
// turn off error display
// no errors will be displayed
error_reporting(0);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?
表C中的代碼將所有錯誤信息甚至簡單的注意事項都顯示出來:
表C
?php
// all errors will be displayed
error_reporting(E_ALL);
// this will generate a notice
echo $undefinedVar;
// this will generate a fatal error
callUndefFunc();
?
如以上3個例子所示,error_reporting()函數在控制錯誤發生時,在屏幕上顯示內容非常重要。這裡的關鍵字是displayed,其表達的意思是錯誤不被顯示而不是錯誤沒有發生。因此,發生致命錯誤時(例如不正確的函數調用),程序將被終止;但是,此時沒有任何消息顯示給用戶。
下面的例子(表 D)說明了這種情況:
表D
?php
// no errors will be displayed
error_reporting(0);
// start a task
echo “Starting task…”;
// call an undefined function
// a fatal error occurs during task processing
callMe();
// end the task
echo “Successfully completed task…”;
?
在表D中,在調用echo()函數時發生了致命錯誤,程序執行時到這點被終止,但是卻沒有任何錯誤消息給出,用戶不知道這種情況還以為程序在正確運行。下面的結論是非常明顯的:不給出錯誤報告非常危險,因為不論過程是否完成它常導致不正確的結論。
注意:調用不帶任何參數的error_reporting()將返回當前的錯誤報告等級。
自定義錯誤處理器
很明顯,隱藏錯誤報告是不正確的,你肯定想知道有什麼其他辦法加以改進。自定義錯誤處理器就是一個很好的能取代PHP默認錯誤處理系統的解決方法。自定義錯誤處理器可以以任何方式設置處理錯誤信息,包括信息如何顯示。
PHP函數中,完成這一功能的是set_error_handler()函數。錯誤發生時,此函數被自動調用,然後給出4個參數:錯誤代碼、錯誤消息、發生錯誤的腳本名稱和錯誤出現的行,此函數對錯誤管理負責。
表E給出一個簡單例子:
表E
?php
// define custom handler
set_error_handler(‘myHandler’);
// custom handler code
function myHandler($code, $msg, $file, $line) {
echo “Just so you know, something went wrong at line $line of your script $file. The system says that the error code was $code, and the reason for the error was: $msg. Sorry about this!”;
}
// generate a notice
echo $undefVar;
?
當運行此腳本的時候,會出現下面的信息:
Just so you know, something went wrong at line 11 of your /dev/error1.php. The system says that the error code was 8, and the reason for the error was: Undefined variable: undefVar. Sorry about this!
此時,PHP的默認錯誤處理器被用戶定義的myHandler()函數所取代,$undefVar變量被激活,PHP通知未定義變量的信息,此信息在運行時引擎產生,然後傳遞給myHandler()函數,同時錯誤發生的地址也傳遞給此函數。然後myHandler()函數輸出友好信息解釋錯誤。
注意:錯誤和致命錯誤很重要,它們會繞過自定義錯誤處理器,然後以PHP默認的錯誤處理機制進行顯示。顯示這些信息可使用前面討論的標準error_reporting()函數進行控制。
例1:動態錯誤頁面和e-mail警報
表F給出了另一個範例,當發生錯誤時,將動態產生HTML錯誤頁面,並且通過e-mail向Web管理員進行報告。
表F
?php
// define custom handler
set_error_handler(‘myHandler’);
// custom handler code
function myHandler($code, $msg, $file, $line, $context) {
// print error page
echo “htmlhead/headbody”;
echo “h2 align=centerError!/h2”;
echo “font color=red size=+1”;
echo “An error occurred while processing your request. Please visit our a href=;home page/a and try again.”;
echo “/font”;
echo “/body/html”;
// email error to admin
$body = “$msg at $file ($line), timed at ” . date (“d-M-Y h:i:s”, mktime());
$body .= “nn” . print_r($context, TRUE);
mail (“webmaster@domain.dom”, “Web site error”, $body);
// halt execution of script
die();
}
// generate a notice
echo $undefVar;
?
這裡,自定義的錯誤處理器在遇到錯誤時動態產生HTML錯誤頁面。此錯誤信息也能被e-mail信息捕獲,然後通過PHP內置的mail()函數發送給管理員。
這裡出現了myHandler()函數的一個新參數$context。這是myHandler()函數的第五個參數,是可選項。它包含了當前變量狀態的快照。包括對管理員有用的上下文信息,有利於減少調試時間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293169.html