Я нахожусь в процессе настройки проекта php, но не очень хорошо знаю, как правильно использовать команды php include / require. Мой макет в настоящее время выглядит так:
/public --apache points into this directory
/public/index.php
/public/blah/page.php
/utils/util1.php -- useful classes/code are stored in other directories out here
/dbaccess/db1.php
dbaccess/db1.php
require '../utils/util1.php
публичный / index.php
require '../dbaccess/db1.php'
общественности / бла / page.php
require '../../dbaccess/db1.php'
Проблема в том, что это из php 'include' документации:
Если имя файла начинается с ./ или ../, оно просматривается только в текущем рабочем каталоге
Таким образом, public / blah / page.php не работает, потому что он включает dbaccess / db1.php, который взрывается при попытке включить util1.php Сбой, потому что это относительный путь из оригинального скрипта в public / blah /, а не из dbaccess /
Это кажется довольно глупым - db1.php просто должен знать, откуда он включается, и который не будет работать.
Я видел такие стратегии:
require_once dirname(__FILE__) . '/../utils/util1.php');
Это, очевидно, работает, так как теперь этот путь - абсолютный путь, но он мне кажется очень странным.
Это нормально? Должен ли я продолжать идти по этому пути или я что-то упускаю здесь очевидное?