LinuxForum.Fans
Тема

Fedora 28. php в UserDirectory

Автор: ValentinK 24 сообщений 1921 просмотров
14.06.2018 23:10 · отредактировано #428985

Привет Линуксоиды!

Столкнулся с проблемой.
Не могу запустить php на Fedora28 в каталоге /home/user/public_html/
httpd сконфигурирован и видит файлы php
UserDirectory для httpd сконфигурирован
но то ли не запускаются сами скрипты, то ли нет соединения с базой данных
база данных postgresql
база установлена
mod_pgsql для httpd установлен
скрипты php (простое приложение) были написаны под Windows с базой данных postgres
Что ещё делать, ума не приложу.

15.06.2018 00:10 · отредактировано #428986

Я бы для начала убедился что php работает нормально.
Для этого в корень можно положить файл index.php

С содержимым:

text

<?php phpinfo(); ?>

И вызывать его в браузере.

Далее если все ок.
Создаем файл .htaccess

Нужно в настройках сервера убедиться, что он будет работать с этим файлом.

со ~ следующим содержимым:

text

AddDefaultCharset UTF-8 DirectoryIndex index.php index.html Options +Indexes

### Restrict Access to GIT RedirectMatch 404 ^(.*/)?\.git+

### Restrict Access to includes folder RedirectMatch 404 ^(.*/)?\includes+

### Restrict Access to database_dump folder RedirectMatch 404 ^(.*/)?\database_dump+

### Restrict Access to NetBeans RedirectMatch 404 ^(.*/)?\nbproject+

### DENY Access TO Users

# order deny,allow # deny from all # allow from 192.168.1.5

### Show Errors on Page

php_flag display_errors on # E_ALL has code 2047 php_value error_reporting 2047 php_flag display_startup_errors on php_flag html_errors on # php_value error_log /var/www/html/PHP_errors.log

### Restrict Cashing some files <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header unset Cache-Control </FilesMatch>

Сообщения об ошибках должны выводиться на странице.
И по этим сообщениям, обычно легко найти как с ними справиться.

15.06.2018 09:30 #428987

И проверь не блокирует ли селинукс.

15.06.2018 20:45 · отредактировано #428988

Скопировал index.php и .htaccess
рестартанул httpd
начал писать


Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.

искал лог ошибок httpd
в /var/log/httpd/error_log
пишет что-то про SELinux
положил ваш index в /var/www/html - работает
скопировал туда моё приложение
в war/log/php_fpm/www-error.log пишет, что не определена функция pg_connect() - функция подключения к postgres
буду искать что недоустановил c postgres
Добавлено: 15.06.2018 20:45:44

запустил в /var/www/html
SELinux блокировал - отключил блокировку

в /home пока не запускается

15.06.2018 20:54 · отредактировано #428989

По идее, нужно установить php5-pgsql (Или какой-то другой актуальный сейчас пакет)

В php.ini разкомментить:

extension=php_pgsql.dll

И перестартовать сервер.

==========================

А так phpinfo() должен выводить информацию какие модули подключены, какой php.ini используется и много еще полезного.

15.06.2018 23:07 #428990

Marley,

спасибо/премного благодарен за помощь

php_7
работает, но в каталоге /var/www/html
модуль pgsql разрешён
пробую запустить в UserDir

16.06.2018 01:25 #428991

Все работает в каталоге /var/www/html
Но не работает в /home/username/

Так?

16.06.2018 15:42 #428993
Marley написал:
Все работает в каталоге /var/www/html
Но не работает в /home/username/

Так?

Да. Похоже, дело в файле .htaccess, сколько раз его можно копировать и в какие каталоги?
В принципе, меня устраивает и вариант с /var/www/html, но хочется знать что и с каталогом /home/username/.
Я не открываю хостинг :), делаю всё на домашнем компьютере.

16.06.2018 16:35 #428994
"ValentinK" написал:
хочется знать что и с каталогом /home/username

а пользователь apache (или откого в вашей системе работает httpd ??) имеет доступ в этот каталог?

16.06.2018 17:31 #428995
"caspar" написал:
а пользователь apache (или откого в вашей системе работает httpd ??) имеет доступ в этот каталог?

Apache пользователь httpd имеет все нужные права
---
Читал в интернете про .htaccess, пришёл к выводу, что возможно что синтаксис для последнего apache изменился.
Пока что не вижу других вариантов.
Добавлено: 16.06.2018 17:31:04

Самое интересное что тот же .htaccess работает в /var/www/html

16.06.2018 18:21 · отредактировано #428996

Думаю, что в конфиге ошибка.
.htaccess (приведенный выше) использовался по сути только для вывода сообщений на страницу.

Что будет, если в каталог пользователя положить, index.php с вызовом phpinfo()?

16.06.2018 19:59 #428997
Marley написал:
Что будет, если в каталог пользователя положить, index.php с вызовом phpinfo()?

при вызове index.php из каталога пользователя

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.

Добавлено: 16.06.2018 19:41:20

заменил вывод лога с ошибками в локальный каталог (в каталоге пользователя)
не пишет ничего. видимо, права записи должны быть не только для группы,
а в каталог пользователя я не хочу, чтобы писали другие пользователи.
в конце концов, это основа безопасности Unix

Добавлено: 16.06.2018 19:45:49

посмотрел лог SELinux
это он портит

Добавлено: 16.06.2018 19:59:08

нашёл запись в логе сервера httpd
.htaccess не разрешён в /home/user/public_html (Options not allowed here)

16.06.2018 20:38 #428998

Можно поробовать отключить SELinux и удалить из /home/user/public_html .htaccess

16.06.2018 21:13 #428999

.htaccess из public_html удалил
SELinux - предупреждений больше не выдаёт
читает файл index.html
на php файлах ошибка - No input file specified.

SELinux - это разве не демон, чтобы его не запускать вообще?

Искал в интернете про ошибку php.
В большинстве решений предлагает конфигурировать mod_rewrite -
скорее всего для перезаписи каталога пользователя.
Но у меня не заработало.
Добавлено: 16.06.2018 21:13:26

Отключил SELinux командой
setenforce 0
Та же самая ошибка

16.06.2018 23:35 #429001
"Marley" написал:

это решение для Windows.
там document root на диске C:

прошёлся поиском по каталогу /etc на включение /var/www/html
находится только httpd.ini и файлы SELinux

Не хочу вас грузить дольше этим вопросом.
В корне вебсервера работает. Мне этого достаточно. Тему можно закрывать.

17.06.2018 00:46 · отредактировано #429002

ок.
Ошибка аналогичная просто.

По идее можно посмотреть в выводе phpinfo()
Loaded Configuration File местоположение php.ini файла.

И посмотреть в нем параметр:
doc_root

Можно попробовать либо закомментировать этот параметр или прописать в нем пустое значение.
user_dir =

18.06.2018 10:35 · отредактировано #429006

Selinux это не демон.
Просто сформируй разрешительное правило, раз уж так надо.

Делается это примерно так (от рута)

text
grep httpd /var/log/audit/audit.log | audit2allow -M myhttpd
semodule -i myhttpd.pp

Выключать selinux полностью или переводить его в permissive режим ни в коем случае не надо.

18.06.2018 13:32 #429007
Vascom написал:
Selinux это не демон.
Выключать selinux полностью или переводить его в permissive режим ни в коем случае не надо.

Есть графический помощник SELinux.
И он пишет, какую дать команду, чтобы пропустить трафик веи-сервера.
Им-то я и воспользовался.

Но дело не только в SELinux.
php не желает запускаться из пользовательского каталога, хотя HTML запускается
Также запускается phpMyAdmin - администрирование MySQL
Посмотрю ещё возможно как он сконфигурирован

Дорогие Линуксоиды!

Не хочу Вас излишне грузить данной темой.
Пока обхожусь php из корня всего компьютера.

18.06.2018 13:48 #429008
"ValentinK" написал:
Есть графический помощник SELinux.

o_O эт в терминале?
Или вы это делаете на десктопе? *SCRATCH*

Войдите или зарегистрируйтесь, чтобы ответить.