【发布时间】:2020-09-12 09:39:56
【问题描述】:
我在 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
stat 清楚地表明它是一个常规文件,所以为什么 apache 决定将它视为一个目录是我无法理解的。
我还注意到 AH01071:在日志中出现错误“主要脚本未知”
【问题讨论】: