当我尝试包含一个长文件路径时,PHP包含无法加载。简短的包含路径可以正常工作。
例如,以下内容将失败:
../../contents/2010-St-Louis-Rams-Tickets-Season-Package-Includes-Tickets-For-All-Regular-Season-Home-Games/inc/title.inc
有谁知道问题出在哪里?
答案 0 :(得分:1)
请检查您的路径(包括驱动器名称等)是否超过260个字符。因为这是Windows的最大目录长度。 Click here to see the reference
该引用还指出,可以通过在路径名前加上“\?\”来创建超长路径名。这应该将最大路径长度扩展到32767个字符。但我不知道这是否可以在PHP中使用。
答案 1 :(得分:0)
在编写看起来像这样的测试时,我遇到了与symfony 1.x项目相同的问题:
require_once __DIR__ . '/../../../../bootstrap/unit.php';
require_once __DIR__ . '/../../../../../../../MY/LONG/PATH.php'
这里的东西是那些/../../ ..占用了大量的角色空间。在我的情况下,如果没有使用它,它会工作。
在symfony中,您可以通过调用sfConfig :: get('sf_root_dir')来获取项目的根目录,因此我可以通过以下方式更改我的代码:
require_once __DIR__ . '/../../../../bootstrap/unit.php';
require_once sfConfig::get('sf_root_dir') . '/MY/LONG/PATH.php'
这完全适合(在我的情况下)。
虽然在这里我使用了symfony框架提供的根目录,但在你自己的项目中,只需要在某个地方定义项目的根目录并保持其可访问性。