Включить путь и странную структуру - PullRequest
0 голосов
/ 15 июля 2010

Hai. У меня есть действительно странный сайт, и теперь он доставляет мне неприятности. Это упрощенная структура

public_html
- adm
--- raport
------ raportpdf.php
--- class
------ Bonus
--------- Bonus_DAO.class.php 
------ config.php
--- raport.php
- index.php

Итак. Index.php - гигантский загрузчик. У него есть строки: (но я не думаю, что они делают различие)

set_include_path('lib/DB' . PATH_SEPARATOR . get_include_path());
set_include_path('lib/PHPLOT' . PATH_SEPARATOR . get_include_path());
set_include_path('config' . PATH_SEPARATOR . get_include_path());
set_include_path('view' . PATH_SEPARATOR . get_include_path());
set_include_path('controller' . PATH_SEPARATOR . get_include_path());
set_include_path('model' . PATH_SEPARATOR . get_include_path());

Внутри Bonus_DAO.class.php что-то вроде

require_once('./adm/class/config.php');

Raportpdf.php вызывается через index.php - он отправляет содержимое без ошибок по почте. Но когда я хочу получить доступ к raport.php, у меня появляется ошибка вроде:

Warning: require_once(./adm/class/config.php) [function.require-once]: failed to open stream: No such file or directory in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php  on line 2

Fatal error: require_once() [function.require]: Failed opening required './adm/class/config.php' (include_path='.:/usr/local/lib/php') in /home/panele/domains/blahblah/public_html/adm/class/Bonus/Bonus_DAO.class.php on line 2

Как я могу решить это?

1 Ответ

1 голос
/ 16 июля 2010

Вставьте строку, подобную следующей, в файл, который включен в эту вашу структуру (этот включенный файл ДОЛЖЕН находиться в вашем корневом каталоге, что-то вроде config.php, или я обычно использую init.php).

define("ROOT_DIR",dirname(__FILE__));

Затем, когда вы получаете ошибки (или для синонимии в вашем коде по этому вопросу - везде, где вам требуется () / include ()), добавьте ROOT_DIR. "/ path /в / файл "до этого.Это дает абсолютный путь к корневому каталогу, а затем вы просто указываете каталог в корневом каталоге, который ищете.Для примера, мой корневой каталог - "/ home2 / example".Теперь я вставляю эту строку в файл, который я включил, и т. Д. И изменяю строку require на эту:

require_once(ROOT_DIR."/adm/class/config.php");

Строка выше в основном соответствует этому (при условии, что я использовал define (); инструкция в файле, расположенном в / home2 / example)

require_once("/home2/example/adm/class/config.php");

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

Удачи!Деннис М.

...