[英]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.