2012-05-17 9 views
2

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

Это моя основная структура каталогов:

/ (root) 
    /mysite 
     /application 
      /models 
       User_model.php 
      /libraries 
       PasswordHash.php 

Я хочу включить PasswordHash.php в User_model.php. Я попытался сделать это:

// Load PHPass library 
include_once('..\libraries\PasswordHash.php'); 
$hasher = new PasswordHash(8, TRUE); 

Но PHP не может найти файл:

Message: include_once(..\libraries\PasswordHash.php) [function.include-once]: failed to open stream: No such file or directory 
+3

Вы попробовали косую черту (/)? – allaire

+0

Использование '' '' 'делает вещи сложными, так как' '\' 'также является символом escape в строках. У '/' этой проблемы нет, так что ее можно использовать. – Arjan

+0

, кстати, вы столкнетесь с проблемами, если хотите включить/использовать эту модель в более глубокой структуре, например /mysite/web/deep/deeper/index.php! вы можете переопределить эту проблему, используя абсолютные пути – Sliq

ответ

1

Это зависит от вашего текущего рабочего каталога, а не от сценария, который он фактически анализирует сейчас. Попробуйте сбросить

getcwd() 

выход функции для определения текущей рабочей директории. Чтобы использовать текущий путь к файлу, вы можете попробовать:

realpath(__FILE__) 

, а затем построить относительный путь к нему. Кроме того, для того, чтобы не перепутать слэш, вы можете использовать константу DIRECTORY_SEPARATOR для разделения папок, как:

require_once(realpath(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.php') 
+0

очень хорошая точка! – Sliq

1
include_once('../libraries/PasswordHash.php'); 

попробовать использовать «/» вместо «\».

Смежные вопросы