簡體   English   中英

包含路徑的PHP 5.3和5.6之間的區別

[英]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");
  1. 將包含路徑添加到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM