Я занимаюсь настройкой 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. Он терпит неудачу, потому что это относительный путь от исходного script в public/blah/, а не от dbaccess/
Это кажется довольно глупым - db1.php должен просто знать, куда он включается, из которого не будет работать.
Я видел такие стратегии:
require_once dirname(__FILE__) . '/../utils/util1.php');
Это, по-видимому, работает с тех пор, когда путь является абсолютным путем, но кажется мне действительно странным.
Это нормально? Должен ли я продолжать этот путь или я не вижу здесь ничего очевидного?