繁体   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