包含路径的php 5.3和5.6之间的区别

时间:2015-12-16 18:17:24

标签: php

我们正在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");
  1. 将包含路径添加到php.ini文件中,如下所示:

    include_path ="。; C:\ webSpace \ Library"

  2. 然后include会如下所示:

    include("employee.php");
    

    我的问题是这些:

    1.版本5.3和5.6之间发生了什么导致了这个问题

    2.为什么文件不以" e"像这样执行得很好:

    include("c:\webSpace\Library\payScale.php");
    

1 个答案:

答案 0 :(得分:1)

您所看到的是转义序列\e的结果,它是ESC字符(ASCII中的0x1B(27))。这是在PHP 5.4.4中添加的,它解释了版本之间的差异。这只发生在那个确切的字符序列(“\ e”)上,这解释了为什么其他路径工作正常。

此外,这只发生在双引号字符串中,因此另一种解决方案是在路径周围使用单引号。

为了清楚起见,如果您的路径使用任何转义序列,例如\n(换行)或\t(制表符),则会出现类似问题。请参阅以下链接以获取完整列表。这只是在双引号字符串中使用Windows风格的反斜杠目录分隔符的结果。

Source