Предупреждение и фатальная ошибка при вызове require_once ()

Я хочу получить элемент div с другого веб-сайта.

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

require_once('../simple_html_dom.php');

$html=file_get_html('http://www.example.com');
$ret=$html->find("div[id=frame-gallery]");
$ret=array_shift($ret);
echo($ret);

но этот код дает ошибки

Предупреждение: require_once (../ simple_html_dom.php) [function.require-once]: не удалось открыть поток: нет такого файла или каталога в E: \ wamp \ www \ in.com \ components \ com_content \ view.php on line 22

Неустранимая ошибка: require_once () [function.require]: Не удалось открыть '../simple_html_dom.php' (include_path = '.; ./ includes; ./ pear') в E: \ wamp \ www \ in.com \ компоненты \ com_content \ view.php в строке 22

Я застрял с этим, пожалуйста, помогите мне с фрагментами кода для получения определенного элемента div с веб-сайта


person saif    schedule 11.07.2010    source источник


Ответы (3)


Файл simple_html_dom.php находится не там, где вы говорите PHP искать его.

require_once('../simple_html_dom.php');

На всякий случай попробуйте использовать полный путь вместо относительного.

require_once('E:\wamp\www\in.com\components\simple_html_dom.php');

Кстати, если полный путь выше неверен, то это ваша проблема. Это путь, который пытается использовать PHP.

Для пояснения: я предлагаю переключить OP только на абсолютные пути, чтобы определить и подтвердить источник проблемы. Переход к производству с абсолютными путями редко бывает хорошей идеей.

person Dolph    schedule 11.07.2010
comment
@Maerlyn: Чтобы по-прежнему гарантировать переносимость, вы можете определить константу в файле index.php, например const ROOT = __DIR__;. Но имхо с относительными путями все в порядке, по крайней мере, у меня с ними никогда не было проблем;) - person NikiC; 11.07.2010
comment
Согласен, относительные пути допустимы :) - person Maerlyn; 11.07.2010
comment
@Maerlyn: Я не хотел предлагать OP переключиться на абсолютные пути. См. Пояснение внизу моего ответа. - person Dolph; 11.07.2010
comment
Большое спасибо ... это решило мои проблемы, но еще одна вещь, которую извлекает div iam, - это все изображения и логотипы, и они отображаются в одной строке ........, и я хочу отформатировать его в 3/3 сетка ..... как это сделать. - person saif; 12.07.2010
comment
Вам нужно открыть новый вопрос :) - person Dolph; 12.07.2010

Требовать и включать пути в PHP может быть непросто. По возможности старайтесь использовать полные пути. Для этого вам пригодится $ _SERVER ['DOCUMENT_ROOT'].

person Activist    schedule 11.07.2010

Ваш inlude_path должен содержать ".", Что означает текущий каталог.

Но если у вас возникли проблемы с включением файла по относительному имени, просто попробуйте использовать абсолютные имена, например require_once ('E: \ wamp \ www \ in.com \ components \ simple_html_dom.php');

Но лучше должно быть:

require_once 'E:/wamp/www/in.com/components/simple_html_dom.php';

person gaRex    schedule 11.07.2010
comment
Нет, вам не нужно иметь . в include_path. PHP принимает во внимание include_path только в том случае, если путь не является ни оберткой потока, ни абсолютным, ни относительным (и в данном случае он относительный). - person NikiC; 11.07.2010