Настройка ошибки включает путь - PullRequest
1 голос
/ 13 ноября 2011

Это код, который я использую (это файл index.php)

/* Set an include path
*/
$dir = explode('/', __DIR__);
$i = count($dir);
unset($dir[$i-1], $dir[$i-2]);
$path = implode('/', $dir);
ini_set('include_path', $path);

// require('system/base/file.php'); // ***1

/* Starter file
*/
if (file_exists('system/base/file.php')) { require('system/base/file.php'); }
else { exit('Error'); }

Я разрабатываю фреймворк с такой структурой

application/
    public/
        index.php
system/

И я хочу установить путь включения к корню / (папка, в которой находятся приложение / и система /). __DIR__ дает мне много вещей, таких как Application/xammp/htdocs/application/public/index.php (в localhost); Я не совсем уверен, что клиенты __DIR__ сильно отличаются, учитывая, что я вообще ничего не знаю о пути. Я только что написал эти первые несколько строк, чтобы легко удалить последние 2 папки из DIR , поэтому я уверен, что путь правильный, какой бы __DIR__ ни был. Я протестировал эти строки в другом тестовом режиме, и они работают нормально.

Странная вещь, которая случается, состоит в том, что, если я запускаю код, как он там показан, он выдает мне «Ошибка». Хотя, если мне просто нужно system/base/file.php перед проверкой его существования, это работает. Поэтому, если я раскомментирую (*** 1), файл необходим.

1 Ответ

2 голосов
/ 13 ноября 2011

Вы можете использовать $ path = dirname (dirname ( DIR )), это достигнет того же, что и ваши первые 5 строк кода.

Согласно документации PHP, include_path работает только с: require (), include (), fopen (), file (), readfile () и file_get_contents (), но не file_exists ()). Следовательно, вам придется хранить $ path в переменной или константе. Например:

/* Set an include path
*/
$path = dirname(dirname(__DIR__));
ini_set('include_path', $path);
define('PATH', $path)

// require('system/base/file.php'); // ***1

/* Starter file
*/
if (file_exists(PATH . 'system/base/file.php')) { require('system/base/file.php'); }
else { exit('Error'); }
...