2017-02-20 23 views
0

У меня есть 200 сайтов, которые я поддерживаю, все они используют:Как использовать относительные пути и каталогов в PHP

<?php 
Include ("/_include/config.php"); 
?> 

Но они erroring, когда попав на страницу, которая имеет это включить. Что мне нужно сделать, чтобы исправить это?

Я предполагаю, что это из-за относительного пути и каталога, в котором он находится, и я получаю это, я просто не знаю, как быстро его исправить.

Windows 2008 R2 IIS 7.5 PHP 7

Спасибо вам,

+0

узнать, как разделяет пространства имен является лучшим способом справиться с этой –

+1

использовать 'эхо getcwd();' напечатать текущую рабочую директорию. Это каталог, к которому относится путь. Убедитесь, что существует файл конфигурации. – Atan

ответ

0

включить другой сценарий относительно траектории текущего сценария, общее решение объединить волшебную константу __FILE__ с dirname функция как так:

include dirname(__FILE__).'/_include/config.php'; 

Вы также можете использовать '..' или вложенные dirname вызовы траверс родителей остро организации:

include dirname(dirname(__FILE__)).'/_include/config.php'; 
// is equivalent to: 
include dirname(__FILE__).'/../_include/config.php'; 
+0

. Я согласен с тем, что я изменил значение по умолчанию для всех новых сайтов, но мне нужно разобраться в существующих 200. Является ли проблема iis или это проблема ini? Я получаю файл с ошибкой открытия файла config.php для ошибки inlcusion (include_path = 'c: \ php \ pear). –

+0

Если память служит мне правильно, я верю, что начало пути с помощью косой черты будет ссылаться на корень файловой системы в Windows. Поэтому 'include '/ _include/config.php'' будет ссылаться на' C: \ _ include \ config.php'. Одно хакерское решение, о котором я могу думать, чтобы избежать изменения какого-либо кода, было бы создать [соединение] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006 (v = vs.85). aspx) из 'C: \ _ include', где фактически находится каталог' _include' (при условии, что '_include' является единственным каталогом, общим для всех сайтов). – Gondrup

+0

Что изменилось бы в php 5.6 и php 7? С php 5.6 он по-прежнему работает, но обновление до 7 больше не работает. –

0

Работа с функцией getcwd(). Это всегда возвращает каталог, где текущий (не включенный) файл (exp. C: \ xampp \ htdocs). по отношению к тому, что вы можете редактировать включает в себя:

include getcwd() . "\include\config.php"; /* C:\xampp\htdocs\include\config.php */