PHP不在文档根目录时不提供

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP不在文档根目录时不提供相关的知识,希望对你有一定的参考价值。

我在F31上的Apache 2.4.43不在文档根目录(默认为/ var / www / html)中提供php服务。我在/etc/http/conf.d中有指令,因为如果我在其中犯语法错误,apache无法启动,所以指令确实包含在内。因此,如果我有

Alias "/mine/" "/home/pete/mine/"

<Directory "/home/pete/mine/">
    Options MultiViews FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

并且我在/ home / pete / mine中有一个文件abc.php,然后当我尝试URL http://localhost/mine/abc.php时得到404

顺便说一句,我确实将apache添加到了适当的组中,因此,任意访问控制不会妨碍此事。

我使用过apache,似乎希望/home/pete/mine/abc.php成为目录,因为它正在其中寻找.htaccess,这让我认为它在这里忽略了.php扩展名。当我将abc.php放在/ var / www / html中时,我可以按http://localhost/abc.php正常访问它。相同的设置在CentOS7上有效,因此这必须是与Fedora31 apache版本有关的问题或sysctl设置。

这是strace:

    [root@localhost conf.d]# strace -f httpd -X 2>&1 | grep mine
    [pid 25020] read(14, "GET /mine/abc.php HTTP/1."..., 8000) = 398
    [pid 25020] stat("/home/pete/mine/abc.php", st_mode=S_IFREG|0644, st_size=15914, ...) = 0
    [pid 25020] openat(AT_FDCWD, "/home/pete/mine/abc.php/.htaccess", O_RDONLY|O_CLOEXEC) = -1 ENOTDIR (Not a directory)
    ^C
    [root@localhost conf.d]# stat /home/pete/mine/abc.php
      File: /home/pete/mine/abc.php
      Size: 15914           Blocks: 32         IO Block: 4096   regular file
    Device: fd02h/64770d    Inode: 23462670    Links: 1
    Access: (0644/-rw-r--r--)  Uid: ( 1605/   pete)   Gid: ( 1501/  pete)
    Access: 2020-05-25 15:27:12.996084665 +0000
    Modify: 2020-05-25 17:03:51.577115385 +0000
    Change: 2020-05-25 17:03:51.577115385 +0000
     Birth: 2020-05-25 12:00:02.317331989 +0000

统计数据清楚地表明它是常规文件,所以apache为什么决定将其视为目录而已。

答案

您为别名使用了错误的规范。

应该是

Alias "/mine" "/home/pete/mine"
<Directory "/home/pete/mine">
    Options MultiViews FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

请参阅Apache documentation了解更多详细信息

没有最后一个/ apache将在该矿山目录中查找基于DirectoryIndex定义的文件(您的基本文件可以是您在此处定义的任何文件)

以上是关于PHP不在文档根目录时不提供的主要内容,如果未能解决你的问题,请参考以下文章

为啥不在swift 3中将database.db从bundle复制到文档目录? [复制]

text 当前目录(./)不在PHP包含路径中

AVPlayer 不在 iOS 文档目录中播放 MP3 音频文件

如何调用不在 html 目录中的脚本? [关闭]

require_once 在文件相对于根目录时不起作用,但在相对于当前位置时起作用

强制 php 查看文档根目录