PHP требует проблемы с "./" - PullRequest
       23

PHP требует проблемы с "./"

1 голос
/ 07 сентября 2010

У меня есть файл index.php в корневом каталоге:

<?php
require_once "./include/common.php";
?>

и файл common.php в папке include:

<?php
require_once "globalConfig.php";
?>

файл globalConfig в той же папке, что и common.php. Дерево папок как:

ххх / index.php

ххх / включить / common.php

ххх / включить / globalConfig.php

index.php работает нормально. Но если я изменю файл common.php как:

<?php
require_once "./globalConfig.php";
?>

PHP показывает предупреждение, что не может найти файл globalConfig.php. В чем разница? Я думаю, что в случае с «./», самый внешний включающий файл (index.php) найдет globalConfig.php в его текущем каталоге.

Ответы [ 3 ]

3 голосов
/ 07 сентября 2010

В ваш index.php добавьте

define('BASE_PATH',str_replace('\\','/',dirname(__FILE__)));

И затем в common.php включите вот так:

require_once BASE_PATH . '/includes/globalConfig.php';

Это найдет точный путь и остановит слэши, тогда всякий развы используете BASE_PATH всегда включайте из корня ваших htdocs, то есть index.php.

1 голос
/ 07 сентября 2010

Путь относительно текущего рабочего каталога; в веб-контексте (php-cgi) это каталог, в котором находится первоначально вызванный скрипт (тот, который запускается непосредственно, а не через include). Простой обходной путь:

require_once dirname(__FILE__) . '/foobar.inc.php';
1 голос
/ 07 сентября 2010

Я считаю, что путь (то есть "./") относится к сценарию BASE , а не к файлу, в котором он содержится. По этой причине я обычно использую абсолютные пути при включении скриптов.

...