我们正在Windows 7上运行的Apache 2.4.18服务器上将我们的系统从PHP 5.3升级到5.6,我们遇到了包含文件的问题。
我们正在使用包含的完整路径,即
include("c:\webSpace\Library\employee.php");
这在5.3中运行得很好。但是在较新的版本5.6和7中,文件名以和" e"开头。被转义所以执行的代码看起来像这样
include("c:\webSpace\Librarymployee.php");
我们想出了两个解决方案:
1.ecape the \ like:
include("c:\webSpace\Library\\employee.php");
将包含路径添加到php.ini文件中,如下所示:
include_path ="。; C:\ webSpace \ Library"
然后include会如下所示:
include("employee.php");
我的问题是这些:
1.版本5.3和5.6之间发生了什么导致了这个问题
2.为什么文件不以" e"像这样执行得很好:
include("c:\webSpace\Library\payScale.php");
答案 0 :(得分:1)
您所看到的是转义序列\e
的结果,它是ESC字符(ASCII中的0x1B(27))。这是在PHP 5.4.4中添加的,它解释了版本之间的差异。这只发生在那个确切的字符序列(“\ e”)上,这解释了为什么其他路径工作正常。
此外,这只发生在双引号字符串中,因此另一种解决方案是在路径周围使用单引号。
为了清楚起见,如果您的路径使用任何转义序列,例如\n
(换行)或\t
(制表符),则会出现类似问题。请参阅以下链接以获取完整列表。这只是在双引号字符串中使用Windows风格的反斜杠目录分隔符的结果。