Переопределить document root

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

при этом не важно в какой я папке нахожусь ?

Добавлено через 16 часов 36 минут
решил вопрос следующим образом.
В файлах, которые в папке www тоесть в корневом каталоге сайта, оставляю

По сути выполняется в крон файле всегда

и определяет этот адрес во всех ниже-подключенных файлах

Apache web server is probably the most used web server across platforms including different Linux distributions and Windows. The web server is used to deliver web content and can serve many queries at once.

In this short tutorial, you are going to learn how to modify the root directory for Apache web server. For the purpose of this tutorial, we will use Ubuntu/Debian and RHEL/CentOS/Fedora based installations of the web server.

However the paths and directives are practically the same for other distributions as well, so you will be able to apply the learned in different OSes as well.

To make the necessary changes you need to modify the DocumentRoot directive of the web server. This is the directory from which Apache will read the contents that the visitor will access over browser. Or in other words, this is the directory that forms the tree of directories that will be accessible over web.

The default DocumentRoot for Apache  is:

/var/www/html
or
/var/www/

These paths are described in the Apache’s configuration file.

Ubuntu/Debian

/etc/apache2/sites-enabled/000-default
/etc/apache/apache2.conf

CentOS/RHEL/Fedora

/etc/httpd/conf/httpd.conf

To change the document root for your Apache web server simply open the corresponding file with your favourite text editor and search for DocumentRoot.

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

After that change the path to the new target directory and make sure that Apache is able to read/write in that directory. Once you have modified the DocumentRoot, save the file and restart apache with:

# systemctl restart apache     [For SystemD]
# service httpd restart        [For SysVinit]    

Final thoughts

The change of default document root is an easy task that can be completed in a couple of minutes. When making such changes is important to make sure that you do not make any typos and make sure to always restart Apache after making changes to its configuration file.

TL; DR: Какие альтернативы последнему образцу кода на этой странице существуют при попытке использовать относительные ссылки на страницах, включенных в команду PHP include?


Я пытаюсь include() файл, который ссылается на документ .css, проблема в том, что мне нужно включить этот файл из нескольких (разных) каталогов. Моя структура каталогов выглядит примерно так:

www
├── (getpath.php)
│
├── css
│   └── style.css
├── php
│   └── header.php
└── content
    ├── index.php
    └── posts
        └── index.php

Веб-сайт также должен работать, если он помещен в подкаталог корневого каталога документа, а не в корне самого документа. По этой причине я не могу просто использовать /css/style.css (относительно корня сервера) для ссылки на мою таблицу стилей CSS.

Я думаю (пожалуйста, поправьте меня, если я ошибаюсь!), что самый простой способ рассказать браузеру, где найти документ CSS, вероятно, указать путь относительно корня документа. Поскольку я ожидаю, что мой веб-сайт будет находиться в подкаталоге корневого документа (и не хочет использовать файл config для хранения подкаталога), мне нужно выяснить относительный путь к подкаталогу сайт находится в.
Моя идея состояла в том, чтобы разместить файл с именем getpath.php в корневом каталоге моего сайта (а не в корневом каталоге документа). В этом файле я написал следующее:

<?php
  define('PROJECT_SUBDIRECTORY', $_SERVER['PHP_SELF']);
?>

Однако я заметил, что это дает мне относительный каталог файла PHP, который пользователь запросил в браузере (например, content/index.php) вместо включенного файла (getpath.php). Я также прочитал, что PHP_SELF основан на REQUEST_URI, который не был бы безопасным. Я нашел это решение здесь:

define('PROJECT_DIR', preg_replace('/^' . preg_quote($_SERVER['DOCUMENT_ROOT'], '/') . '/', '', __DIR__));

Это прекрасно работает, но мне интересно, есть ли «лучший» способ сделать это.
Мне не удалось найти переменную для этого — действительно ли решение выше — единственный способ сделать это?

Дополнительно:  15 Free Software-apps to Root any Android with

Должен ли я использовать предыдущий пример кода или есть лучший способ?
Должен ли я изменить структуру каталогов? Как другие люди решают эту проблему?



Другое редактирование. Проблема заключается в том, что каждый php файл в моем проекте /documentroot/project1 включает панель навигации с помощью функции PHP include. Панель навигации сохраняется как /documentroot/project1/php/header.php, а css для навигационной панели — /documentroot/project1/css/style.css. При использовании относительных ссылок (чтобы сообщить браузеру, где style.css), браузер по-прежнему считает, что путь относится к index.php, а не к header.php, поэтому он ищет CSS в том же каталоге, что и index.php. < ш > Проблема: Есть несколько файлов index.php в разных каталогах, и я не хочу копировать и вставлять мою папку CSS в каждую директорию, содержащую файл index.php.

Romario

Posts: 5
Joined: Wed Jan 16, 2019 10:47 pm

Os: Ubuntu 15x
Web: apache + nginx
Как изменить document_root с public_html на public?

Мне нужно (для Laravel) изменить document_root с public_html на public — как это сделать через панель?

Если можно — дайте ссылку на пошаговую инструкцию пожалуйста, чтобы понятно было.

В идеале хочется ставить Laravel в подкаталог laravel домена.

Т.е. путь к документ рут будет такой:

П.С. В ларавеле я тоже новичок ))


Alex Connor

Support team
Posts: 1047
Joined: Fri Mar 21, 2014 7:49 am
Contact:

Os: CentOS 6x
Web: apache + nginx
Re: Как изменить document_root с public_html на public?


by Alex Connor » Thu Jan 31, 2019 9:02 pm

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


grayfolk

Support team
Posts: 1111
Joined: Tue Jul 30, 2013 10:18 pm
Contact:

Os: CentOS 6x
Web: nginx + php-fpm
Re: Как изменить document_root с public_html на public?


by grayfolk » Fri Feb 01, 2019 9:08 am

Romario wrote:

Wed Jan 30, 2019 6:34 pm

В идеале хочется ставить Laravel в подкаталог laravel домена.

Это совершенно ни к чему. Ставьте в public_html и делайте папку public_html/public document_root.


Romario

Posts: 5
Joined: Wed Jan 16, 2019 10:47 pm

Os: Ubuntu 15x
Web: apache + nginx
Как изменить переменную %docroot% для конкретного шаблона?


by Romario » Sat Feb 02, 2019 3:20 pm

Удалось установить Laravel путем изменения

но я не хочу устанавливать Laravel в public_html, я хочу устанавливать его в laravel 🙂

Как это сделать?

Как изменить значение %docroot% для конкретного шаблона laravel.tpl?


Alex Connor

Support team
Posts: 1047
Joined: Fri Mar 21, 2014 7:49 am
Contact:

Os: CentOS 6x
Web: apache + nginx
Re: Как изменить document_root с public_html на public?


by Alex Connor » Sat Feb 02, 2019 3:31 pm

находите нужный шаблон и вносите правки

Пы.Сы. Не нудно плодить темы..


achyorny

Posts: 54
Joined: Tue May 07, 2013 7:30 pm

Re: Как изменить document_root с public_html на public?


by achyorny » Wed Jun 12, 2019 3:34 pm

в шаблонах есть шаблон LARAVEL — выберите его

в конфиге домен.nginx.conf
измените

Romario wrote:

Wed Jan 30, 2019 6:34 pm

Здравствуйте!

Мне нужно (для Laravel) изменить document_root с public_html на public — как это сделать через панель?

Если можно — дайте ссылку на пошаговую инструкцию пожалуйста, чтобы понятно было.

В идеале хочется ставить Laravel в подкаталог laravel домена.

Т.е. путь к документ рут будет такой:

П.С. В ларавеле я тоже новичок ))


flyte

Posts: 15
Joined: Wed Dec 13, 2017 11:04 am

Re: Как изменить document_root с public_html на public?


by flyte » Tue Sep 24, 2019 7:48 pm

achyorny wrote:

Wed Jun 12, 2019 3:34 pm

в шаблонах есть шаблон LARAVEL — выберите его

здравствуйте! подскажите пожалуйста где взять такой шаблон?
nginx + apache


flyte

Posts: 15
Joined: Wed Dec 13, 2017 11:04 am

Re: Как изменить document_root с public_html на public?


by flyte » Tue Sep 24, 2019 8:08 pm

или можно конфиги подправить для домена и все?


grayfolk

Support team
Posts: 1111
Joined: Tue Jul 30, 2013 10:18 pm
Contact:

Os: CentOS 6x
Web: nginx + php-fpm
Re: Как изменить document_root с public_html на public?


by grayfolk » Tue Sep 24, 2019 8:15 pm

flyte wrote:

Tue Sep 24, 2019 8:08 pm

или можно конфиги подправить для домена и все?

Лучше всего — создать новый шаблон на основе существующих.


flyte

Posts: 15
Joined: Wed Dec 13, 2017 11:04 am

Re: Как изменить document_root с public_html на public?


by flyte » Wed Sep 25, 2019 8:49 am

Спасибо, сделал шаблон на основе дефолтного, все работает четко!



Restoring the public_html directory

  • You can restore the original configuration and use the public_html directory as the document root again by reversing the procedure that you followed above.
  • To do this, follow these steps:
    • Log in to your account using SSH.
    • At the command prompt, type the following:
click below button to copy the code. By Apache tutorial team
  • This command removes the symbolic link that redirects public_html to the modified document root directory.
  • After you run this command, you must run the next command in step 3 as soon as possible for two reasons.
  • First, your site is inaccessible as long as public_html is missing. Second, cPanel will automatically recreate the public_html directory if it detects that it is missing.
  • If you have not run the command in step 3 before this occurs, your site will not function like you expect.
    • Type the following command, replacing source_directory with the name of the directory that you want to use as public_html.
    • For example, this directory could be the public_html_backup directory that you created in the previous procedure, the new_document_root directory that you were using for testing, or an entirely different directory:
mv ~/source_directory ~/public_html
click below button to copy the code. By Apache tutorial team
    • Use a web browser to test your web site. The browser should display content from the public_html directory.

How to change the document root directory

  • To change the document root directory for an account on a shared server. By default, the document root directory for the primary domain is the public_html directory.
  • By default, your account’s document root directory on a shared server is the /home/username/public_html directory, where username represents your A2 Hosting account username.
  • However, sometimes you may want to use a different directory as the document root.
  • This is frequently the case if you want to try out a new application or test a website configuration.
  • You can change the document root directory by moving the contents of the public_html directory to another directory, and then creating a symbolic link that points public_html to the new document root directory. To do this, follow these steps:
    • Log in to your account using SSH.
    • At the command prompt, type the following command:
mv ~/public_html ~/public_html_backup
click below button to copy the code. By Apache tutorial team
  • This command moves the public_html directory, and all of the files it contains, to the public_html_backup directory.
  • You can use another name besides public_html_backup if you want.
  • After you run this command, you must run the next command in step 3 as soon as possible for two reasons. First, your site is inaccessible as long as public_html is missing.
  • Second, cPanel will automatically recreate the public_html directory if it detects that it is missing.
  • If you have not run the command in step 3 before this occurs, your site will not function like you expect.
    • Type the following command, replacing new_document_root with the name of the directory that you want to use as the new document root:
ln -s ~/new_document_root ~/public_html
click below button to copy the code. By Apache tutorial team
  • Your site may be inaccessible until the server’s cron job sets the correct file permissions and group ownership for the new document root directory.
  • This cron job runs at twelve minutes past the hour on every hour evenly divisible by four (4:12, 8:12, 12:12, etc.).
  • To minimize any possible downtime for your site, you can change the document root directory just before one of these scheduled times.
  • After the cron job runs, the new document root directory file permissions are set to 750, and the group ownership is set to nobody, as shown in the following sample directory listing:
click below button to copy the code. By Apache tutorial team
    • Use a web browser to test your web site. The browser should display content from the new document root directory.
  • If your web site does not function correctly:
    • Make sure that the new document root directory exists and contains web site files (such as index.html or index.php).
    • Make sure you run the commands in step 2 and 3 in quick succession. To verify that the symbolic link is correct, type the following command:
ls -l ~/public_html
click below button to copy the code. By Apache tutorial team
  • You should see output similar to the following, where username represents your account username:
click below button to copy the code. By Apache tutorial team
  • If you do not see similar output, then the symbolic link is not set up correctly. Type the following command:
rm -rf ~/public_html
click below button to copy the code. By Apache tutorial team
  • Then repeat steps 2 and 3.

Другой способ сделать это

Когда я настраивал свою массовую виртуальную среду для разработки, я столкнулся с этой проблемой. См. http://blog.simonholywell.com/post/1516566788/team-development-server#virtual_document_root

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

Мое предпочтительное решение

Таким образом, ваш пример станет следующим:

include(get_my_path() . '/Includes/Connect.php');

Определите текущий режим работы:

define('RUN_MODE_PRODUCTION', true); // in live mode
define('RUN_MODE_PRODUCTION', false); // debug mode

Теперь для определения функции:

function get_my_path() {
    if(RUN_MODE_PRODUCTION === true) {
        return '/my/path/';
    }
    return '/my/other/path';
}

Переопределение фактических значений в $_SERVER — плохая идея. Если кто-то еще позже приступит к работе над проектом, не будет ясно, что происходит.

Это очень упрощенная версия начальной загрузки среды, которую я использую в производстве каждый день.

Дополнительно:  Как исправить ошибку IRQL_NOT_LESS_OR_EQUAL в Windows 10 - BugsFighter
Оцените статью
Master Hi-technology
Добавить комментарий