Где файл public html index php
Перейти к содержимому

Где файл public html index php

  • автор:

Почему index.php находится в папке public, а не в общей папке?

Если вы знакомы со структурой сайта libArea, то знаете, что файл index.php находится в папке public . Это хорошая идея держаться index.php за пределами корневого каталога вашего проекта:

Структура LibArea

Публичный каталог (public)

Публичный каталог (/public) является домом для всех общедоступных и статических файлов вашего приложения, включая изображения, таблицы стилей и файлы JavaScript. Там же находится index.php.

Другие фреймворки и приложения PHP могут использовать другой подход и добавлять index.php файл непосредственно в root каталог. Пока вы направляете сервер в «общедоступный» каталог, содержащий index.php файл, сайт должен отображаться так, как ожидалось.

В LibArea файл index.php находится в public папке с другими «безопасными для просмотра» ресурсами, такими как css, js, изображения и т.д. Это способствует хорошей практике безопасности, чтобы общедоступные файлы были общедоступными, а частные файлы — частными.

Поощряйте надлежащие методы обеспечения безопасности, чтобы общедоступные файлы были общедоступными, а другие, нет.

Но как насчет приложений, которые добавляют index.php в корень?

Есть много популярных веб-приложений, которые не следуют этой структуре и предоставляют index.php в корневом каталоге.

Существует (если обобщать и упрощать) два подхода.

Использование папки /public — это подход к безопасности с использованием «белого списка», означающий, что все запрещено, кроме того, что находится в белом списке (все в общей папке).

Неиспользование папки /public — это подход к безопасности с использованием «черного списка», означающий, что разрешено все, кроме того, что занесено в черный список (правила, определенные в файле конфигурации вашего веб-сервера).

LibArea использует подход «белого списка» к веб-безопасности. Это сделано потому, что мы считаем, что держать весь наш системный код в корневой папке — не очень хорошая идея. (Аналогично обстоят дела и с Content Security Policy).

Настройка веб-сервера (для локальной отладки)

Пример конфигурации для XAMPP, PHP 8.1.2, httpd-xampp.conf:

 ServerAdmin webmaster@lib.loc DocumentRoot "d:/xampp/htdocs/lib.loc/public" ServerName lib.loc ServerAlias www.lib.loc ErrorLog "d:/xampp/htdocs/lib.loc/error.log" CustomLog "d:/xampp/htdocs/lib.loc/access.log" Require all granted AllowOverride All Order allow,deny Allow from all 

Или для пакета: XAMPP для Windows 8.1.4 (PHP 8.1.4), файл (httpd-vhosts.conf):

 ServerAdmin webmaster@lib.loc DocumentRoot "D:/xampp/htdocs/lib.loc/public" ServerName lib.loc 

P.S. обычно техническая поддержка хостинга (если вы объясните ей ситуацию по поводу public ) знает о чем разговор и довольно охотно поможет сделать подобающие настройки. Тем более подобная практика применяется и в некоторых других приложениях.

Если уж разговор зашел про локальный хостинг, то можно ещё столкнуться при авторизации с ошибкой: Protected from CSRF

Чтобы исправить её необходимо закомментировать 2 строки в файле: public/.htaccess

# php_value session.cookie_httponly 1 # php_value session.cookie_secure 1

И если есть, то это:

# # Header onsuccess edit Set-Cookie ^(.*) "$1; SameSite=Strict; HttpOnly; Secure" # 

На реальном хостинге всё должно работать…

Using a /public folder is a white-list approach to security, meaning everything is banned except for the things that are white listed (everything in the public folder).

Not using a /public folder is a black-list approach to security, meaning everything is allowed except for things that are black listed (rules defined in your webserver configuration file).

LibArea uses a white-list approach to web security. This is because we don’t think it’s a good idea to keep all of our system code in the root folder.

The situation is similar with Content Security Policy.

Примеры

class IndexController extends Yaf_Controller_Abstract /* действие по умолчанию */
public function indexAction () $this -> _view -> word = «hello world» ;
//или
// $this->getView()->word = «hello world»;
>
>
?>

Пример #6 Шаблон вывода по умолчанию



Hello World


Пример #7 Запуск приложения

Вывод приведённого примера будет похож на:

  Hello World  hello world  

Замечание:

Пример выше можно также создать с помощью генератора кода Yaf который можно найти здесь yaf@github.

User Contributed Notes 10 notes

5 years ago

YAF based on the actual case:Hooks、Event、Modules、Plugins、Multiple templates、Multiple languages、SQL Centralized Management.
Support Electric Business Platform、OA、ERP、IaaS、PaaS、SaaS、Blog、Cms.
Common features required by any platform: User、Acl、Menu.

3 years ago

rewrite ^/(.*) /index.php/$1 last;

index index.php index.html index.htm;
if (!-e $request_filename) <
rewrite ^/(.*)$ /index.php?_path_info=/$1 last;
>
>

在index.php中,把query string «_path_info» 放到$_SERVER变量中。
ini_set ( «display_errors» , true );
error_reporting ( E_ALL | E_ERROR );

$_SERVER [ ‘PATH_INFO’ ]=@ $_GET [ ‘_path_info’ ]; //加这一行,yaf只认PATH_INFO

define ( «APPLICATION_PATH» , dirname ( __DIR__ ));

$app = new Yaf\Application ( APPLICATION_PATH . ‘/conf/application.ini’ );

$app -> bootstrap ()-> run ();

8 years ago

you can generate the example above by using Yaf Code Generator: https://github.com/laruence/php-yaf/tree/master/tools/cg

7 years ago

I success in «application» directory set to:

— application/
— Bootstrap.php
+ modules
+ Index
+ controllers
— Index.php //default controller
+ views
|+ index
— index.phtml //view template for default action
— library
— models
— plugins

And Bootstrap.php should be enter at least 3 line like these:

class Bootstrap extends Yaf_Bootstrap_Abstract >

8 years ago

use nginx and php-fpm you can config:

location / try_files $uri $uri/ /index.php$is_args$args;
>

location ~ \.php$ fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
>

8 years ago

the nginx rewrite rule should be:

if (!-e $request_filename) rewrite ^/(.*) /index.php?$1 last;
>

10 years ago

Lost default Bootstrap.php

/* bootstrap class should be defined under ./application/Bootstrap.php */
class Bootstrap extends Yaf_Bootstrap_Abstract public function _initConfig ( Yaf_Dispatcher $dispatcher ) var_dump ( __METHOD__ );
>
public function _initPlugin ( Yaf_Dispatcher $dispatcher ) var_dump ( __METHOD__ );
>
>

2 years ago

PHP8 Yaf3.3.3 按照官网配置 导致Nginx死循环:

rewrite or internal redirection cycle while processing «/index.phpindex.phpindex.

解决:
Example #3 Rewrite rule

#for nginx
server listen ****;
server_name domain.com;
root document_root;
index index.php index.html index.htm;

if (!-e $request_filename) rewrite ^/(.*) /index.php?$1 last;
>
>

3 years ago

rewrite ^/(.*) /index.php/$1 last;

index index.php index.html index.htm;
if (!-e $request_filename) <
rewrite ^/(.*)$ /index.php?_path_info=/$1 last;
>
>

在index.php中,把query string «_path_info» 放到$_SERVER变量中。
ini_set ( «display_errors» , true );
error_reporting ( E_ALL | E_ERROR );

$_SERVER [ ‘PATH_INFO’ ]=@ $_GET [ ‘_path_info’ ]; //加这一行,yaf只认PATH_INFO

define ( «APPLICATION_PATH» , dirname ( __DIR__ ));

$app = new Yaf\Application ( APPLICATION_PATH . ‘/conf/application.ini’ );

$app -> bootstrap ()-> run ();

8 years ago

#path_info is needed by some php frameworks like yaf/thinkphp
location @path_rw rewrite ^/(.*)$ /index.php/$1 last;
>

location ~ \.php fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;

fastcgi_split_path_info ^(.+?\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
>

  • Yaf
    • Введение
    • Установка и настройка
    • Предопределённые константы
    • Примеры
    • Конфигурация приложения
    • Yaf_​Application
    • Yaf_​Bootstrap_​Abstract
    • Yaf_​Dispatcher
    • Yaf_​Config_​Abstract
    • Yaf_​Config_​Ini
    • Yaf_​Config_​Simple
    • Yaf_​Controller_​Abstract
    • Yaf_​Action_​Abstract
    • Yaf_​View_​Interface
    • Yaf_​View_​Simple
    • Yaf_​Loader
    • Yaf_​Plugin_​Abstract
    • Yaf_​Registry
    • Yaf_​Request_​Abstract
    • Yaf_​Request_​Http
    • Yaf_​Request_​Simple
    • Yaf_​Response_​Abstract
    • Yaf_​Route_​Interface
    • Yaf_​Route_​Map
    • Yaf_​Route_​Regex
    • Yaf_​Route_​Rewrite
    • Yaf_​Router
    • Yaf_​Route_​Simple
    • Yaf_​Route_​Static
    • Yaf_​Route_​Supervar
    • Yaf_​Session
    • Yaf_​Exception
    • Yaf_​Exception_​TypeError
    • Yaf_​Exception_​StartupError
    • Yaf_​Exception_​DispatchFailed
    • Yaf_​Exception_​RouterFailed
    • Yaf_​Exception_​LoadFailed
    • Yaf_​Exception_​LoadFailed_​Module
    • Yaf_​Exception_​LoadFailed_​Controller
    • Yaf_​Exception_​LoadFailed_​Action
    • Yaf_​Exception_​LoadFailed_​View
    • Copyright © 2001-2024 The PHP Group
    • My PHP.net
    • Contact
    • Other PHP.net sites
    • Privacy policy

    Где файл public html index php

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

    Модуль CLI SAPI содержит встроенный веб-сервер.

    Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP будут останавливаться, если запрос заблокирован.

    URI запросы обслуживаются из текущей директории, в которой был запущен PHP, если не используется опция -t для явного указания корневого документа. Если URI запроса не указывает на определённый файл, то будет возвращён index.php или index.html в указанной директории. Если ни один из файлов не существует, то поиск этих файлов будет продолжен в родительской директории и так далее до тех пор, пока они не будут найдены или был достигнут корень документа. Если найден index.php или index.html, он возвращается, а в $_SERVER[‘PATH_INFO’] будет находится последняя часть URL. В противном случае возвращается 404 код ответа.

    Если PHP-файл указывается в командной строке, когда запускается веб-сервер, то он рассматривается как скрипт «маршрутизации» (router). Скрипт выполняется в самом начале каждого HTTP-запроса. Если этот скрипт возвращает false , то запрашиваемый ресурс возвращается как есть. В противном случае браузеру будет возвращён вывод этого скрипта.

    Стандартные MIME-типы возвращаются для файлов со следующими расширениями: .3gp, .apk, .avi, .bmp, .css, .csv, .doc, .docx, .flac, .gif, .gz, .gzip, .htm, .html, .ics, .jpe, .jpeg, .jpg, .js, .kml, .kmz, .m4a, .mov, .mp3, .mp4, .mpeg, .mpg, .odp, .ods, .odt, .oga, .ogg, .ogv, .pdf, .pdf, .png, .pps, .pptx, .qt, .svg, .swf, .tar, .text, .tif, .txt, .wav, .webm, .wmv, .xls, .xlsx, .xml, .xsl, .xsd и .zip.

    История правок: Поддерживаемые MIME-типы (расширения файлов)

    Версия Описание
    5.5.12 .xml, .xsl, и .xsd
    5.5.7 .3gp, .apk, .avi, .bmp, .csv, .doc, .docx, .flac, .gz, .gzip, .ics, .kml, .kmz, .m4a, .mp3, .mp4, .mpg, .mpeg, .mov, .odp, .ods, .odt, .oga, .pdf, .pptx, .pps, .qt, .swf, .tar, .text, .tif, .wav, .wmv, .xls, .xlsx и .zip
    5.5.5 .pdf
    5.4.11 .ogg, .ogv, и .webm
    5.4.4 .htm и .svg
    История изменений

    Версия Описание
    7.4.0 Вы можете настроить встроенный веб-сервер так, чтобы он выполнял разветвление нескольких воркеров для проверки кода, который требует нескольких одновременных запросов к встроенному веб-серверу. Задайте в переменной окружения PHP_CLI_SERVER_WORKERS количество требуемых воркеров перед запуском сервера. Не поддерживается в Windows.

    Внимание

    Эта экспериментальная функция не предназначена для продакшен использования. Обычно встроенный веб-сервер не предназначен для продакшен использования.

    Пример #1 Запуск веб-сервера

    $ cd ~/public_html $ php -S localhost:8000

    Почему после залива скрипта на хостинг не видит индекс файл?

    Скачал скрипт, залил на хост, прописал подключение к бд но выдаёт что сайт ещё не сделан(временная страница).
    Если прописать путь к индекс файлу то выдаёт ошибку strlen() expects parameter 1 to be string, array given.
    senworld.xyz/public/index.php

    • Вопрос задан более трёх лет назад
    • 296 просмотров

    Комментировать
    Решения вопроса 0
    Ответы на вопрос 3
    Сочетание клавиш Ctrl + F5, очистит кэш страницы и в большинстве случаев решит проблему.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать

    Shlop

    Full Stack Developer (PHP/Laravel/JavaScript)

    Попробуйте на хостинге создать файл .htaccess на одном уровне с папкой public, со следующем содержимым:

    DirectoryIndex /public/index.php RewriteEngine On RewriteBase / RewriteRule ^\.index\.php$ - [L] RewriteCond % !-d RewriteCond % !-f RewriteCond % !-l RewriteRule . /public/index.php [L] 

    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать

    ThunderCat

    ThunderCat @ThunderCat Куратор тега Веб-разработка

    У вас папка public должна быть document_root, а у вас документ рут на один уровень выше. Настройте сервер правильно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *