Intereting Posts
Как удалить одиночные комментарии в php? Как заменить двойные кавычки одиночными кавычками Можно ли использовать хэш-знак (#) для комментирования в PHP? Можно ли использовать аутентификацию в RSS-каналах, используя php? Как предотвратить эхо в PHP и поймать, что внутри? обрабатывать несколько запросов по почте на тот же URL-адрес Laravel 5 «Попытка получить свойства на не-объекте» в PHP Раздражающая ошибка PHP: «Строгие стандарты: только переменные должны передаваться по ссылке в" Будет ли порядок данных в почтовой форме одинаковым для него в веб-форме? Определение языка PHP Совместимость с PHP preg_match в Python Объединить 2 массива разной длины Пытаться анализировать только изображения из RSS-ленты Определения шагов во внешних файлах в Behat Функция PHP mail () не будет отправляться в gmail, но будет отправлена ​​на мою учетную запись, отличную от gmail.

PHP root с .htaccess

Я использую 000webhost, который использует папку public_html в корневой папке в качестве видимого корня для сайта. В этой папке у меня есть папка с некоторыми скриптами PHP и другими папками с индексными страницами PHP. Использование require "/assets/includes/scriptname.php"; не работает, поскольку он пытается найти папку sibling для public_html. Мне разрешено редактировать .htaccess, чтобы изменить корневую папку относительно PHP-поиска, но я не знаю, как это сделать.

Дерево файлов:

 public_html (within root, but simulated root) folder1 index.php folder2 index.php folder3 index.php assets subfolder subfolder index.php 

Короче говоря, как мне сделать указанную точку кода внутри /public_html/ без явного объявления ее (желательно как изменение .htaccess, так как я хочу, чтобы мой код мог быть перемещен на другой хост без перезаписи чего-либо).

Чтобы ответить на переписывание .htaccess, не могли бы вы объяснить, как каждая строка работает? Благодарю.

Solutions Collecting From Web of "PHP root с .htaccess"

.htaccess не помогает. Это конфигурация Apache и никак не влияет на поведение PHP.

Код:

 require "/assets/includes/scriptname.php" 

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

Лучший способ указать путь к включенному файлу – создать его время выполнения, начиная с пути вставки. Здесь используются dirname() функции PHP dirname() и константа __DIR__ .

Учитывая структуру файла образца:

 public_html | +- index.php | +- assets | | | +- somescript.php | +- includes | +- header.php | +- footer.php 

Предположим, вам нужно включить assets/somescript.php в index.php . Напишите это в index.php :

  require __DIR__.'/assets/somescript.php'; 

Магическая константа __DIR__ содержит каталог файла, в котором он используется. Для index.php '/(...path-to-your-user-directory...)/public_html' устанавливается в '/(...path-to-your-user-directory...)/public_html' .

Если somescript.php необходимо включить header.php он должен сделать это следующим образом:

 require dirname(__DIR__).'/includes/header.php'; 

и так далее.

Таким образом вы можете переместить все приложение в другой каталог, на другой сервер и даже на другую ОС, и он все равно будет работать.