为什么我的 include_path 中的反斜杠被破坏了?

Why does a backslash in my include_path get mangled?

我使用以下代码能够轻松地在我的开发机器和共享主机上测试我的页面:

$include_path_afrihost = "../php/Services/facebook/php-graph-sdk-5.0.0/src/Facebook";
$include_path_dev = __DIR__."\sdk\facebook\php-graph-sdk-5.0.0\src\Facebook";
ini_set("include_path", $include_path_afrihost . PATH_SEPARATOR . $include_path_dev);
require_once "Facebook.php";

当我尝试 运行 代码时,出现以下异常:

require_once(): Failed opening required 'Facebook.php' (include_path='../php/Services/facebook/php-graph-sdk-5.0.0/src/Facebook;C:\Dev\PHP\Projects\Messenger\Code\FacebookClient\sdkacebook\php-graph-sdk-5.0.0\src\Facebook')

请注意带有“\FacebookClient\sdkacebook\”的开发包含路径中的混乱,其中缺少反斜杠和 'facebook' 的 'f'。我直接从Windows文件资源管理器中的地址栏复制路径,其他反斜杠都可以。

如果我更改一行并将有趣的反斜杠加倍,例如:

$include_path_dev = __DIR__."\sdk\facebook\php-graph-sdk-5.0.0\src\Facebook";

那么代码就可以正常工作了。

\f 被读取为转义字符,类似于 \n 是换行符。

使用第二个反斜杠转义反斜杠:\f 变为 \f。通常,您应该始终对反斜杠进行转义以避免出现此问题。