Подтвердить что ты не робот

Как установить DOCUMENT_ROOT и корень сайта в моей локальной установке PHP?

Я работаю с парнем с сайтом в Интернете. Это чужой сайт для меня, и я медленно работаю через странный код. У меня есть MAMP локально, и у моего http://localhost/ есть много клиентских папок, исходящих от этого. Внутри этого кода есть много команд $_SERVER ['document_root'] и ссылок, таких как shopping.gif, которые просто теряются в локальной области PHP.

Как я могу легко установить ссылку document_root на то, что она должна быть (хотя бы локально, но на самом деле не хотите связываться с файлами сайта, так как мне нужно будет снова загрузить их и не захотеть перерыть вживую сайт! И есть ли способ косвенной настройки, где PHP думает, что корень сайта так изображения ссылок "/images/..." будет отображаться правильно... Мой локальный URL-адрес разработчика PHP для этого сайта: http://localhost:8888/_CLIENTS/clientsite/www/... но в коде '/' в начале '/images/...' ссылается на http://localhost:8888/??

Спасибо.

4b9b3361

Ответ 1

То, что я бы рекомендовал, - это vhosts, так что вы можете обслуживать "чужой сайт" локально, не загружая свой веб-сервер по умолчанию.

  • localhost → стартовая страница или другое
  • alien.localhost → сайт клиентов, любой корень пути /doc, который вы хотите.
  • x.localhost → другой сайт

В apaches глобальный файл конфигурации или включен vhost.conf;

NameVirtualHost localhost:80
# the mysql tool url
<VirtualHost phpmyadmin.localhost:80>
# and absolute path
DocumentRoot "/srv/www/phpMyAdmin/"
</VirtualHost>

#Same for the Client Site
<VirtualHost foo.localhost:80>
DocumentRoot "/path/to/desired/webroot/"
</VirtualHost>

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

в конфигурации сервера сервера apache

DocumentRoot "/srv/www/htdocs"
#
# Configure the DocumentRoot Properties
#
<Directory "/srv/www/htdocs"> 
    Options All
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    AllowOverride All
    # Controls who can get stuff from this server.
    Order allow,deny
    Allow from all
</Directory>
#
# Configure Sub-Domain Properties. This prevents those nasty 403 errors
#

# mysql administration tool
<Directory "/srv/www/phpMyAdmin/">
    Options Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

# a client web site built with CakePHP
<Directory "/home/eddie/workspace/Digital_Business/app/webroot/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Ответ 2

@Eddie answer мне очень помог, но мне пришлось по-прежнему провести дополнительное исследование, чтобы решить ту же проблему для себя, используя XAMPP на OSX. Я думал, что добавлю свое полное решение здесь на благо потомков.

Сначала я добавил следующие записи в httpd-vhosts.conf(в папке "etc/extra/" в XAMPP):

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/"
</VirtualHost>
<VirtualHost *:80>
    ServerName client1.my-machine
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client1/"
</VirtualHost>
<VirtualHost *:80>
    ServerName client2.my-machine
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client2/"
</VirtualHost>

Обратите внимание, что я специально использовал подстановочный знак вместо "localhost" для URL-адресов VirtualHost и добавил конфигурацию ServerName, где я указывал каждое имя поддомена. Обратите также внимание на то, что вместо имени "localhost" я использовал свое имя машины ( "my-machine" ) - таким образом, все запросы с любой машины (а не только на localhost) могут быть правильно оценены. Я разрабатываю в OSX, но тестирую браузеры в различных виртуальных машинах через Parallels. Используя этот подход, я могу получить доступ к http://client1.my-machine с любого компьютера или виртуальной машины в моей сети. С указанным "localhost" он будет работать только на моей машине разработки.

Примечание: Первая запись VirtualHost используется в качестве значения по умолчанию (как описано здесь: http://httpd.apache.org/docs/2.2/vhosts/name-based.html) и требуется, чтобы запросы не были по умолчанию для одного из настраиваемых сайтов.

Я также добавил настройки разрешений в httpd.conf, как показано в @Eddie answer. Это не всегда требуется, но я столкнулся с двумя отдельными случаями, когда мне нужно было сделать это изменение:

  • Основание нового сайта в каталоге за пределами установленного по умолчанию XAMPP http root (в основном любой путь, который будет доступен через HTTP, должен иметь явные разрешения)
  • Добавление правил mod_rewrite для сайта, настроенного как виртуальный хост (по пути http по умолчанию), я получал ошибку ".htaccess: RewriteEngine здесь не разрешено". Чтение комментариев в httpd.conf о параметре AllowOverride делает очевидной причину ошибки, но я раньше этого не замечал. Изменение этого параметра на "Все" исправило ошибку.

Обратите внимание, что при редактировании httpd.conf вам может потребоваться раскомментировать следующую строку (она была отмечена мной по умолчанию), или внесенные изменения vhosts не вступят в силу:

# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf

Наконец, мне также пришлось добавить пользовательские имена доменов в файл моих хостов, как указано в комментариях выше. В OSX вы делаете это, редактируя "/private/etc/hosts" (в Windows это будет "Windows/System32/drivers/etc/hosts" ) и добавлены следующие строки:

127.0.0.1   my-machine
127.0.0.1   client1.my-machine
127.0.0.1   client2.my-machine

ПРИМЕЧАНИЕ. В пользовательском интерфейсе OSX Finder по умолчанию скрытые папки (включая/частные) не отображаются. Вы можете изменить это навсегда, взломав внутренние параметры Finder (Google для получения дополнительной информации) или, проще говоря, сделать случайные изменения, просто используйте пункт меню "Go > Go to folder", который позволит вам открывать скрытые папки напрямую по имени. Лично я использую стороннюю оболочку OSX под названием PathFinder, которую я бы сердечно рекомендовал (это стоит небольшая лицензионная плата). Он включает в себя опцию меню для скрытия/отображения скрытых файлов, среди многих других полезных функций.

Единственное, что связано с перетаскиванием, - это то, что мне также пришлось добавить соответствующие записи в мой файл хостов Windows VM, указывающий на мою физическую машину, чтобы URL-адреса разрешались через Apache/OSX:

192.168.1.5 client1.my-machine
192.168.1.5 client2.my-machine

Мне не нужна запись только для имени машины (которая автоматически разрешается), но добавление поддомена к ней не будет корректно разрешено без этих записей хоста. Это связано с тем, что иногда мой Mac IP изменяется (через DHCP), но это незначительная неприятность. Я бы предположил, что могу настроить его на то, чтобы не нуждаться в этих IP-адресах, но я не мог понять это и готов двигаться дальше:) (Если кто-то знает ответ, оставьте комментарий)

Теперь у меня есть несколько клиентских сайтов, работающих в одном месте и доступных из всех тестовых сред dev/test. Надеюсь, это поможет кому-то еще.

Ответ 3

Это настройка для сервера. Если вы используете Apache, все, что вам нужно сделать, это отредактировать файл httpd.conf (в системе на основе Unix он должен быть либо в /etc/apache2/httpd.conf, либо /etc/httpd/httpd.conf, в зависимости от того, какая версия Apache у вас есть). В файле должна быть строка, которая выглядит так:

#
# 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 "/whatever/your/document/root/is"

Технически, путь Eli также работает, но я не думаю, что редактирование переменных сервера действительно хорошая идея, в общем.

Ответ 4

Для текущего процесса вы можете просто сделать

$_ SERVER [ "document_root" ] = "whatever";

Будьте осторожны.

Ответ 5

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

Учебник Tanguay