Пустая страница на веб-сервере с Codeigniter 4

#php #codeigniter #path #webserver #codeigniter-4

#php #codeigniter #путь #веб-сервер #codeigniter-4

Вопрос:

Я загрузил свой проект на веб-сервер, следуя рекомендациям по безопасности, я поместил файлы CodeIgniter 4 в закрытый каталог сервера: /home/user/codeigniter

и И в общедоступном каталоге: /home/user/public_html

И вот мой путь: $pathsPath = FCPATH. '../codeigniter/app/Config/Paths.php';

Я разместил все файлы правильно, как;

 |__ public_html (or your domain root folder)
| |assets
| |index.php
| |.htaccess
|
|__ codeigniter
|__ app
|__ system
|__ writable
|__ .env
  

Но я всегда получаю пустую страницу.
Не могли бы вы помочь мне справиться с этой проблемой, пожалуйста

И error.log является:

 RITICAL - 2020-10-14 06:12:09 --> ini_set(): Headers already sent. You cannot change the session module's ini settings at this time
#0 [internal function]: CodeIgniterDebugExceptions->errorHandler(2, 'ini_set(): Head...', '/home/catideko/...', 101, Array)
  

Комментарии:

1. Вы предоставили вашей папке для записи правильные разрешения? Это было бы моим первым предположением. Если эти папки имеют правильные разрешения, вы сможете проверить журналы в папке с возможностью записи / logs для получения дополнительной информации о конкретной ошибке. Если эта папка пуста, вы можете проверить журналы ошибок вашего сервера, если его apache проверяет журналы там, если его nginx попробует их. Наконец, если ни на одном из них нет ошибок, проверьте, включено ли на вашем сервере ведение журнала ошибок.

2. Были ли у вас какие-либо ошибки в error.log?

3. Также я вижу, что вы отправляете файл .env на свой веб-сервер, что не является хорошей практикой, приложение должно иметь производственные настройки в своем коде и соответствующие конфигурационные файлы. Файл .env используется разработчиками для переопределения этих настроек без каких-либо изменений в коде. Не должен использоваться в производстве.

4. Да, вот моя первая строка error.log RITICAL - 2020-10-14 06:12:09 --> ini_set(): Headers already sent. You cannot change the session module's ini settings at this time #0 [internal function]: CodeIgniterDebugExceptions->errorHandler(2, 'ini_set(): Head...', '/home/catideko/...', 101, Array)

5. Похоже, у вас что-то подозрительное происходит с вашими сеансами. Опубликуйте код, в котором вы загружаете библиотеку сеансов и как вы ее используете.

Ответ №1:

Я решил проблему. Источник проблемы связан с «zlib_output_compression» на моем хосте. Она должна быть в положении «выкл». На cpanel после изменения позиции на «выкл» все идет хорошо.

Ответ №2:

Это неправильно $pathsPath = FCPATH. '../codeigniter/app/Config/Paths.php'; , вы не можете использовать FCPATH и .. вместе подобным образом, вы должны указать полный путь, например $pathsPath = '/home/user/codeigniter/app/Config/Paths.php';

Также убедитесь, что путь /home/user/codeigniter доступен с помощью php, либо вам нужно включить этот путь в свой php.ini или установить в свой index.php

 set_include_path(get_include_path() . PATH_SEPARATOR . '/home/user/codeigniter');
  

и затем подтвердите, включен ли ваш путь

 echo get_include_path();
  

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

после завершения всех настроек убедитесь, что в ваших папках, доступных для записи, установлены разрешения на запись. и ваш App.php включает в себя

 public $sessionSavePath          = WRITEPATH . 'session';
  

Хотя вышеуказанная настройка будет работать, я предлагаю вам придерживаться установки composer по умолчанию и путей

 composer create-project codeigniter4/appstarter project-root
  

Это обеспечит бесперебойное обновление при обновлении CI4, чтобы сделать ваше приложение более безопасным. ограничьте доступ к вашей папке для записи, например, с помощью nginx / apache вы можете ограничить, какой тип файлов может быть открыт из этих папок.