php файл и функции fopen не работают

Я пытаюсь узнать о создании веб-ботов, и я прорабатываю книгу под названием Веб-боты, пауки и скребки экрана Майкл Шренк. В книге он приводит пример кода для базового бота, который загружает веб-страницу. Я скопировал код в точности так, как он есть в книге (без комментариев):

<?
$target = "http://www.schrenk.com/nostarch/webbots/hello_world.html";
$downloaded_page_array = file($target);
for($xx=0; $xx<count($downloaded_page_array); $xx++)
echo $downloaded_page_array[$xx];
?>

Я поместил этот код в php-файл и загрузил его на мой сайт. Когда я перехожу к нему в браузере, однако, ничего не происходит. Он просто загружает пустую страницу. Без содержания.

Ранее я попробовал другой фрагмент, который предоставил автор, опять же, этот был скопирован ТОЧНО из книги, только с этим у меня действительно не было пустой страницы, страница просто пыталась загрузить, пока время не истекло. Никогда не вернул правильный контент:

$target = "http://www.schrenk.com/nostarch/webbots/hello_world.html";
$file_handle = fopen($target, "r");
while (!feof($file_handle))
echo fgets($file_handle, 4096);
fclose($file_handle);

Я проверил URL, чтобы убедиться, что файл существует, и он существует. Я понятия не имею, почему это не сработает. Я прочитал, как использовать файл (); и fopen (); функции в PHP, но из того, что я могу сказать, они оба используются правильно. Что я здесь не так делаю?

1

Решение

Не fgets($file_handle, 4096) но fread($file_handle, 4096) ;

$target = "http://www.schrenk.com/nostarch/webbots/hello_world.html";
$file_handle = fopen($target, "r");
while (!feof($file_handle))
echo  fread($file_handle, 4096);
fclose($file_handle);

Затем, если вы хотите создать новый файл из извлеченный текст:

  // extracting text operation
$target = "http://www.schrenk.com/nostarch/webbots/hello_world.html";
$file_handle = fopen($target, "r");
$getText =  fread($file_handle, 4096);
fclose($file_handle);

// writing file operation
$writeHandle = fopen ("folder/text.txt","w"); // file will be created if not existed
$writeFile = fwrite($writeHandle,$getText );
fclose($writeHandle );
0

Другие решения

Сначала вы должны поставить error_reporting(E_ALL); ini_set('display_errors', '1'); к вашему сценарию, чтобы включить отображение ошибок в вашем сценарии, как AbraCadaver упомянул в своем комментарии.

Причиной может быть то, что allow_url_fopen отключен на вашем хостинге.

Эта опция активирует обертки fopen с поддержкой URL, которые обеспечивают доступ к объектам URL, таким как файлы. Оболочки по умолчанию предназначены для доступа к удаленным файлам с использованием протокола ftp или http, некоторые расширения, такие как zlib, могут регистрировать дополнительные оболочки.

Увидеть: http://php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

Вы можете проверить это через:

var_dump(ini_get('allow_url_fopen'));

Ваш сценарий требует true бежать правильно.

Если allow_url_fopen не является true или же 1 Вы можете попробовать использовать file_get_contents() загрузить URL.

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

Увидеть: http://php.net/manual/en/function.file-get-contents.php

0

Доступ к URL через fopen() это плохая идея. Это требует от вас иметь allow_url_fopen включен в конфигурацию PHP, что открывает двери для огромного числа эксплойтов (хостеры отключают его по определенной причине).

Попробуйте использовать функции cURL вместо этого: они дадут вам гораздо больше гибкости и контроля. PHP документация дает вам некоторые отличные примеры начать с.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector