PHP не обслуживается, если не указано в документе root - PullRequest
0 голосов
/ 25 мая 2020

Мой apache 2.4.43 на F31 не обслуживает PHP из любого места, кроме документа root (который по умолчанию / var / www/html). У меня есть директивы в /etc/http/conf.d, которые включаются, поскольку apache не запускается, если я сделаю там синтаксическую ошибку. Итак, если у меня есть

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

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

, и у меня есть файл ab c. php в / home / pete / mine, тогда я получаю 404, когда пробую URL http://localhost/mine/abc.php

Кстати, у меня есть apache, добавленное в соответствующую группу, чтобы дискреционный контроль доступа не мешал этому делу.

Я выбрал apache и, кажется, ожидает / home / pete / mine / ab c. php, чтобы быть каталогом, поскольку он ищет там .htaccess, что заставляет меня думать, что он игнорирует здесь расширение. php. Когда я помещаю ab c. 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 решает рассматривать его как каталог, мне не по силам.

Я также заметил AH01071: В журналах есть ошибка «Основной сценарий неизвестен»

1 Ответ

1 голос
/ 25 мая 2020

Вы используете неправильную спецификацию для псевдонима.

Это должно быть

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

подробности см. В документации Apache

Без последнего / apache будет искать в этом каталоге mine файл на основе определения DirectoryIndex (вашим базовым файлом может быть все, что вы там определите)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...