问题描述
我用它来包含一些文件
require_once realpath(__DIR__) . '/../anotherfolder2/anotherfolder3/filename2.PHP
但是由于某些原因,似乎/ ..被忽略并触发
无法打开所需的'/var/domains/domain.com/foldername1/anotherfolder2/anotherfolder3/filename.PHP 在第10行的/var/domains/domain.com/foldername1/anotherfolder2/filename1.PHP中
其中realpath( DIR )= /var/domains/domain.com/foldername1
什么可能导致/ ..被忽略,这是PHP 7.4中的新内容吗?
解决方法
尝试将整个路径传递给 realpath()函数:
require_once realpath(__DIR__ . '/../anotherfolder2/anotherfolder3/filename2.php)
此功能将dir1/dir2/../file1
更改为dir1/file1
。
在您的情况下:/var/domains/domain.com/foldername1/../anotherfolder2/anotherfolder3/filename.php
到/var/domains/domain.com/anotherfolder2/anotherfolder3/filename.php
。
摘自文档:
realpath()扩展所有符号链接,并解析对输入路径中/./、/../和extra /字符的引用,并返回规范化的绝对路径名。
https://www.php.net/manual/en/function.realpath.php
,我相信您关于Model.allRequests
是realpath(__DIR__)
的说法是不正确的。
您的错误消息包括发生错误的文件路径:
...在第10行的/var/domains/domain.com/foldername1/anotherfolder2/filename1.php中
因此我们知道'/var/domains/domain.com/foldername1'
将是__FILE__
,而'/var/domains/domain.com/foldername1/anotherfolder2/filename1.php'
将是__DIR__
。
'/var/domains/domain.com/foldername1/anotherfolder2'
不太可能改变这一点,所以我们有:
realpath
require_once '/var/domains/domain.com/foldername1/anotherfolder2' . '/../anotherfolder2/anotherfolder3/filename2.php'
会删除第一个..
给出的内容:
anotherfolder2
错误消息指出找不到哪个文件路径。