Как запустить PHP проект с Apache из домашней папки - PullRequest
0 голосов
/ 11 мая 2019

Старый проект codeignitor просто не запустится из-за проблемы с Apache.Перепробовал все решения, найденные в других постах и ​​на других форумах, но пока удачи.Это простая проблема, и я думаю, что это как-то связано с разрешениями.Все же настройки разрешений вроде бы в порядке.

Во-первых, проблема.Вот что я вижу в браузере

this is what I see in the browser

Вот что я вижу в журналах Apache:

[Сб11 мая 10: 55: 43.026415 2019] [core: crit] [pid 10672] (13) Отказано в доступе: [клиент 127.0.0.1:38216] AH00529: /home/user_name/.htaccess pcfg_openfile: невозможно проверить файл htaccess, убедитесь, чтоон доступен для чтения и что / home / user_name / 'является исполняемым 127.0.0.1 - -

[11 / May / 2019: 10: 55: 43 -0400] "GET / HTTP / 1.1" 403 575 "- "" Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 74.0.3729.131 Safari / 537.36 "

[Сб 11 мая 10: 55: 43.314120 2019] [ядро:crit] [pid 10672] (13) Отказано в доступе: [клиент 127.0.0.1:38216] AH00529: /home/user_name/.htaccess pcfg_openfile: невозможно проверить файл htaccess, убедитесь, что он доступен для чтения и что / home / user_name /исполняемый, реферер: http://my_php_site.local/ 127.0.0.1 - -

[11 / May / 2019: 10: 55: 43 -0400] "GET /favicon.ico HTTP / 1.1" 403 585 "http://my_php_site.local/" "Mozilla / 5.0 (X11; Linux x86_6)4) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 74.0.3729.131 Safari / 537.36 "

Обратите внимание, что apache пытается выполнить файл .htaccess в / home / user_name /.htaccess

У меня есть файл .htaccess в папке проекта, и я думаю, что Apache должен искать.

Во-вторых, моя среда.На всякий случай, если я что-то упустил, я приведу здесь всю свою конфигурацию.

Проект находится где-то в моей папке / home / user_name / , а не в / var / www/.

Права доступа к файлу для .htaccess:

-rwxr-xr-x  1 user_name www-data .htaccess

Разрешения для папки проекта:

drwxr-xr-x 11 user_name www-data my_php_site

Поскольку проект находится в домашней папке, у меня естьправило в моем файле / etc / hosts:

127.0.0.1       my_php_site.local

Конфигурация apache для моего сайта:

<Directory /home/user_name/code/projects/my_php_site>
    Require all granted
</Directory>
<VirtualHost *:80>
        ServerName my_php_site.local
        ServerAlias my_php_site.local
        ServerAdmin webmaster@localhost
        DocumentRoot /home/user_name/code/projects/my_php_site

        ErrorLog /home/user_name/code/projects/my_php_site/logs/apache2-error.log
        CustomLog /home/user_name/code/projects/my_php_site/logs/apache2-access.log combined
</VirtualHost>

И, наконец, сам файл .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?/$1 [L]

1 Ответ

0 голосов
/ 23 мая 2019

Решение

Apache - с группой пользователей www_data - должен иметь возможность проходить через домашнюю папку. Это означает, что ему нужно восьмеричное значение 5, символическое r-x.

chmod 750 /home/user_name

В одном посте переполнения стека упоминаются разрешения для папки проекта, но не для самой домашней папки: https://askubuntu.com/questions/325498/apache-cant-access-folders-in-my-home-directory

Следующие шаги также могут быть необходимы, в зависимости от версии и системы :

Разрешить Apache выполнять файлы в домашней папке

sudo a2enmod userdir

sudo nano /etc/apache2/mods-available/php7.0.conf Прокомментируйте эту часть (поставьте # в начале каждой строки):

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

sudo nano /etc/apache2/apache2.conf

Добавить это:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
...