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复制到文档目录? [复制]
AVPlayer 不在 iOS 文档目录中播放 MP3 音频文件