[英]difference between php 5.3 and 5.6 with include path
我們正在Windows 7上運行的Apache 2.4.18服務器上將系統從PHP 5.3升級到5.6,我們遇到了包含文件的問題。
我們正在使用完整路徑進行包含,即
include("c:\webSpace\Library\employee.php");
這在5.3中運行得很好。 但是在較新的版本5.6和7中,以和開頭的文件名被轉義,因此執行的代碼如下所示
include("c:\webSpace\Librarymployee.php");
我們提出了兩種解決方案:
1.像這樣轉義\\
include("c:\webSpace\Library\\employee.php");
將包含路徑添加到php.ini文件中,如下所示:
include_path =“。; C:\\ webSpace \\ Library”
然后包含將如下所示:
include("employee.php");
我的問題是:
1,版本5.3和5.6之間發生了什么導致此問題
2.為什么不以“ e”開頭的文件執行如下:
include("c:\webSpace\Library\payScale.php");
您所看到的是轉義序列\\e
,它是ESC字符(ASCII中的0x1B(27))。 這是在PHP 5.4.4中添加的,它解釋了版本之間的差異。 這僅在該確切的字符序列(“ \\ e”)發生時發生,這解釋了為什么其他路徑可以正常工作。
另外,這僅在雙引號字符串內發生,因此另一種解決方案是在路徑周圍僅使用單引號。
請注意,如果路徑使用任何轉義序列,例如\\n
(換行)或\\t
(制表符),您也會遇到類似的問題。 請參閱下面的鏈接以獲取完整列表。 這只是在雙引號字符串內使用Windows風格的反斜杠目錄分隔符的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.