尝试在错误文档页面中使用 php 包含,但它在不同的目录中不起作用


Trying to use php include in an errordocument page but it doesn't work in different directories

我想我发现当我有一个错误文档自定义错误页面时,包含并不总是有效,因为包含需要一个目录,而有错误的页面可能在不同的目录中。

directory1/directory2/thispagecausesa404error.php

directory1/thispagecausesa404error.php

如果我的错误文档页面中有include includepage.php;,那么它将不起作用。

我决定将include_once $_SERVER['DOCUMENT_ROOT'].'/includepage.php';添加到错误文档页面,这解决了问题,但我怀疑我做错了什么,或者没有看到在错误页面上完美包含的正确方法。

我做错了什么?

我建议永远不要依赖正确设置DOCUMENT_ROOT。相反,通过__DIR__魔术常量使用当前脚本的相对路径,例如

include __DIR__ . '/relative/path/from/this/script/to/includepage.php';

如果需要,路径还可以包含通过../的父目录遍历,例如

include __DIR__ . '/../../some/dir/includepage.php';