1. 程式人生 > >6、檔案的路徑問題、錯誤的處理

6、檔案的路徑問題、錯誤的處理

檔案路徑問題:
1、相對路徑:
就是以“./”, 或“../”,開頭的路徑。
./    表示當前網頁檔案的所在位置(資料夾,目錄);
../    表示當前網頁檔案的所在位置的上一級位置(資料夾,目錄)

2、絕對路徑:

有2種絕對路徑:
本地絕對路徑:
window系統:    c:/d1/d2/page3.php
unix系列系統:    /d1/d2/page3.php
網路絕對路徑:    http://www.abc.com/d1/d2/page4.php

錯誤的分級
在php中,將各種錯誤,分門別類,依據不同的嚴重程度和產生的來源(機制),將各種錯誤分為大約10幾個級別。
每個級別的錯誤,都對應一個內部的名稱——系統常量!
系統錯誤:
E_ERROR:系統嚴重錯誤

一發生,程式立即停止執行。
該錯誤一般希望馬上。
E_WARNING:系統警告
一發生,提示錯誤,並繼續執行。
通常該錯誤希望能夠在“下一工作日”去處理掉(解決)。
E_PARSE:語法錯誤
一發生,提示錯誤,而且程式碼完全不會執行——在執行之前先檢查語法。
E_NOTICE:系統提示
一發生,提示錯誤,並繼續執行。
發個郵件通知一下,自己安排時間有空去解決。

使用者自定義錯誤
只有3個:
E_USER_ERROR;
E_USER_WARNING;
E_USER_NOTICE;

我們可以在程式中,自己建立(生成)錯誤——是為了針對某些資料的不合理情形,而建立的錯誤。
比如:讓使用者填寫年齡, 填18是ok,但填寫188就是不合理——從數字角度本身是沒有問題。
其他:
E_ALL;        代表所有錯誤——表示它可以“包括”錯誤。
E_STRICT:     代表“嚴格性”語法檢查錯誤——某種語法是可以執行的,但在當前的php版本中是不歡迎使用。


錯誤的顯示控制
網頁中顯示(提示)錯誤資訊,是可以進行控制的,有2種途徑:
1,在php.ini檔案中設定,對所有php程式都有效;
2,在當前指令碼檔案中,只對當前腳步檔案有效。

錯誤的顯示有2個方面可以進行控制;
1,設定是否顯示:display_error:
php.ini中;display_error = On;    //表示顯示, Off表示不顯示;

指令碼中:  ini_set(“display_error”,  1);  //1表示顯示, 0表示不顯示,也可以用true,false
指令碼中的設定優先順序高。

2,設定顯示哪些級別的錯誤——依賴與第一項設定為顯示的情況。
php.ini檔案中:
error_reporting = E_NOTICE;    //只顯示E_NOTICE錯誤
error_reporting = E_NOTICE | E_WARNING;    //顯示E_NOTICE和E_WARNING錯誤
error_reporting = E_NOTICE | E_WARNING | E_USER_ERROR;    

//顯示E_NOTICE和E_WARNING和E_USER_ERROR錯誤
解釋上一行::
E_NOTICE:            00000000 00001000
E_WARNING:         00000000 00000010
E_USER_ERROR:    00000001 00000000
或運算(|)
00000001 00001010

實際上,在開發階段,常用的是:
error_reporting = E_ALL | E_STRICT;
它是這樣的結果:
E_ALL                01110111 11111111
E_STRICT:             00001000 00000000
或運算(|)
01111111 11111111
可見,E_ALL並非真的表示“所有”,而是隻有E_ALL | E_STRICT才真的表示所有。
繼續:如果在顯示“所有”錯誤的基礎上,只想“關閉”個別少數錯誤呢?
跟狀態資料的設定(關閉)道理一樣,只要這麼做:
error_reporting = E_ALL | E_STRICT & ~E_NOTICE;    //只關閉了E_NOTICE錯誤提示
error_reporting = E_ALL | E_STRICT & ~E_NOTICE & ~E_WARNING;//關閉了2個
在程式碼中設定:
ini_set(“error_reporting”,  E_NOTICE);    //只顯示E_NOTICE錯誤
ini_set(“error_reporting”,  E_NOTICE | E_WARNING);    ////顯示E_NOTICE和E_WARNING錯誤
ini_set(“error_reporting”,  E_ALL | E_STRICT & ~E_NOTICE);    //只關閉E_NOTICE錯誤

ini_set()含義可以設定幾乎所有php.ini中的設定項,形式如下:
ini_set(“設定項名稱” ,值);    //這種設定都只對當前指令碼有效,而且無需重啟apache,很方便。
另一個對應函式是:ini_get(“設定項名稱”);//用於獲取某項的值。


記錄錯誤日誌
在開發階段,我們通常都是顯示所有錯誤——意圖解決錯誤
在產品階段,我們通常都是隱藏所有錯誤——並同時將錯誤資訊記錄到檔案中——錯誤日誌檔案。
我們可以自己檢視錯誤日誌以解決開發階段沒有發現的錯誤問題。
記錄錯誤日誌同樣有2種途徑:
1,在Php.ini檔案中設定:
log_errors = On;   //用於設定是否記錄錯誤日誌,On記錄,Off不記錄
error_log = “錯誤日誌檔名”;    //設定錯誤日誌的檔名
此時,該檔案沒有給定路徑,則系統會在每個資料夾下建立該檔案並記錄進去

error_log還有一個特殊值可以使用:
error_log = syslog;        //此時不會記錄錯誤日誌檔案,而是把錯誤資訊寫入到系統錯誤日誌中

自定義錯誤處理
以上的錯誤處理,不管是顯示錯誤,還是記錄錯誤日誌,都是php語言內部實現的。
我們只是幾個簡單的設定是否顯示或是否記錄或顯示哪些,或記錄到哪裡。
則:
自定義錯誤處理,就可以讓我們自己完全控制錯誤的提示內容!
做法非常簡單:
1,設定要用來進行自定義處理錯誤的自定義函式名;
2,自己去定義該函式,並在其中進行任何錯誤資訊的輸出(或記錄)。
這兩件事做好後,一旦發生錯誤,則系統就會呼叫該函式去執行裡面的程式碼——想幹嘛幹嘛。
(注意:上述自定義處理錯誤的函式中,只作了“顯示錯誤”的工作,而沒有做“記錄錯誤日誌”的工作,這需要“操作檔案”的知識。)
幾點說明:
1,一定是用自定義錯誤處理程式,則系統不再處理錯誤。
2,但:如果一旦發生嚴重錯誤(E_ERROR, E_USER_ERROR),則立即停止程式,並也不去呼叫自定義錯誤處理——此時系統錯誤處理工作會照常進行——即對於嚴重錯誤,自定義錯誤處理函式處理不了

相關推薦

檔案管理檔案路徑檔案處理命令列技巧

一、檔案管理 1.新建 ①新建檔案 touch file file1 file2 .... 注意:touch預設用來建立檔案,同時此命令具備修改檔案時間戳功能 ②新建目錄(directory) mkdir        dir                     

C語言入門(廿二)之預處理指令巨集條件編譯檔案包含typedefconst

預處理指令 什麼是預處理指令: 在我們的檔案翻譯成0和1之前做的操作我們稱之為預處理指令。一般情況預處理指令都是以#號開頭的。 巨集定義的格式 不帶引數的巨集定義: #define 巨集名 值 巨集定義的作用:      

C++中當前路徑相對路徑絕對路徑的表示方法及如何建立一個檔案

在建立檔案之前先了解當前目錄和當前目錄的上一級目錄的表示方法:“./”表示當前目錄,而“../”則表示當前目錄的上一級目錄。其次要了解相對路徑和絕對路徑的區別: 1)絕對路徑:絕對路徑是指目錄下的絕對位置,直接到達目標位置,通常是從碟符開始的路徑。例如:C:\windows\syste

C語言__預處理(巨集定義檔案包含條件編譯)

C語言__預處理(巨集定義、檔案包含、條件編譯) 預處理簡單理解     1.C語言在對源程式進行編譯之前,會先對一些特殊的預處理指令作解釋(比如之前使用的#include檔案包含指令),產生一個新的源程式(這個過程稱為編譯預處理),之後再進行通常的編譯

Asp.Net 獲取FileUpload控制元件的檔案路徑檔名副檔名

string fileNameNo = Path.GetFileName(FileUploadImg.PostedFile.FileName); //獲取檔名和副檔名string DirectoryName = Path.GetDirectoryName(FileUploa

獲取某個路徑下的所有檔名檔案路徑,以及判斷是否是圖片

工具類 public class fileUtil { //獲取檔名稱 public static List<String> getfile(File file,List<String> resultFileName){

linux學習(六)絕對路徑相對路徑cdmkdirrmdirrm

director shell script local mkdir -p create deb blog 目錄 一、絕對路徑 就是從根開始的,如:/root、/usr/local。 二、相對路徑 相對於當前路徑的,比如我們在當前路徑下建立了一個a.txt。 [root@i

布局SD路徑單元測試SQLitePC蛋蛋源碼出租與ListView

幀布局 -- 必須 復制項目 提交 r+ 輕量 但是 lose 相對PC蛋蛋源碼出租 dsluntan.com Q:3393756370 VX:17061863513布局 RelativeLayout組件默認左對齊、頂部對齊設置組件在指定組件的右邊 android:lay

Linux-相對路徑絕對路徑cd命令創建和刪除目錄mkdir/rmdir rm命令

move 圖片 size 裏的 type cafe 例如 mdi 開始 絕對路徑:從根開始,為絕對路徑。從根下找能找到的命令為絕對路徑。相對路徑:相對當前所在位置的路徑。 pwd:當前所在目錄。 cd命令: cd - : 回到上次所在目錄 例如:遙控器的交替鍵。cd

SSH祕鑰分發檔案分發批量執行命令

SSH祕鑰分發、檔案分發、批量執行命令 要求使用同一使用者lss,實現A機器從本地分發資料到B、C的過程不需要輸入密碼,且可以批量在B、C主機上執行命令 IP 角色 使用者 192.1

開啟運維之路之第 3 篇——目錄作用介紹檔案搜尋其它命令解壓縮包使用者管理

1、目錄作用介紹 我們先切換到系統根目錄 / 看看根目錄下有哪些目錄 [[email protected] ~]# cd / [[email protected] /]# ls 說明: 根目錄下的bin和sbin,usr目錄下的bin和sbin,這四

Linux伺服器記憶體CPU檔案系統磁碟IO效能以及網路連通性shell巡檢

shell自動巡檢伺服器基礎配置          每個專案都要部署在伺服器上,那麼伺服器的安全效能和一些基本情況是我們需要了解的,比如伺服器CPU、記憶體、檔案系統、磁碟IO、還有一些網路連通性

學習筆記之openssl檔案加密CA證書的建立

1.openssl 的基礎知識     首先openssl的英文是Secure Sockets Laye。安全套接層協議。可以在Internet上提供祕密性傳輸。 SSL能使使用者/伺服器應用之間的通訊不被攻擊者竊聽,並且始終對伺服器進行認證,還可選擇

9.Android中的IPC方式——Bundle檔案共享MessengerAIDLContent-Provider

    Android中的IPC方式有很多,比如可以通過Intent中附加extras(Bundle型別)來傳遞資訊,或者通過共享檔案的方式來共享資料,還可以採用前面的文章說的Binder方式來跨程序通訊,另外ContentProvider天生就支援跨程序訪問的(Conte

塊儲存檔案儲存物件儲存的區別

1. 塊儲存 Amazon的EC2中就有塊儲存,叫做EBS (Elastic Block Storage)。        其實就是虛擬機器掛載的一塊虛擬磁碟。推而廣之,你會發現,自己平時用的VMware、VirtualBox都可以建立虛

塊儲存檔案儲存物件儲存三者的本質差別

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 物件儲存:就是鍵值儲存,介面比較簡單,就是GET,PUT,DEL和其他擴充套件,如S3、OSS、NOS等; 檔案儲存:支援POSIX介面,對應的傳統的檔案系統有Ext3、Ext4等,與傳統檔案系統的區別在於分散式儲存提供了並行化的能

塊儲存檔案儲存物件儲存及內容分發CDN

工作6,7年了,在實際搭建私有云網路中常用NAS結構,而部署傳統RAC叢集的時候也需要配SAN網路,對這幾種儲存方式有直觀的瞭解,卻沒能理論化系統化的梳理,今天看到一篇講這方面的文章,我也就搞了個拿來主義,收錄到自己的BLOG下,同時又加入了一點自己的想法,和其他很多博主的想法,整理後供

C# 將圖片匯出Excel(包括 建立Excel 檔案壓縮遞迴刪除檔案及資料夾)

新增引用 using ICSharpCode.SharpZipLib.Zip;   public void CreateDirectory(string DirectoryPath) { if (!Directory.Exist

利用lisp進行AutoCAD二次開發(環境說明檔案讀取以及表格建立與寫值)

今天學習的這個例子是lisp計算機語言程式設計,說到這門計算機語言還是大學的時候接觸的,不過那時候都是停留在瞭解的層面上,後面編寫AutoCAD二次開發程式幾乎是用的是C#。所以對lisp不熟,就別提關於lisp在AutoCAD方面的介面。而今天所以又撿起這麼計算機語言,是出

測試用例設計---上傳圖片檔案匯出檔案上傳查詢(搜尋)

一、上傳圖片 1、對於上傳的圖片,假設系統要求上傳的格式為jpg或gif格式圖片,大小為<=某M的圖片 測試用例: (1)上傳圖片格式為jpg或gif的圖片,大小<=某M,成功上傳; (2)上傳圖片格式為jpg或gif的圖片,大小>某M,不能上傳;