PHP 7.4绝对路径-为什么/ ..被忽略?

问题描述

我用它来包含一些文件

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.allRequestsrealpath(__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

错误消息指出找不到哪个文件路径。