Sdscompany.ru

Компьютерный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Fopen открыть файл html

fopen

(PHP 3, PHP 4, PHP 5)

fopen — Открывает файл или URL

Описание

fopen() закрепляет именованый ресурс, указанный в аргументе filename, за потоком. Если filename передан в форме «scheme://. «, он считается URL’ом и PHP проведёт поиск обработчика протокола (также известного как «обвёртка») для этой схемы. Если ни одна обвёртка не закреплена за протоколом, PHP выдаст замечание чтобы помочь вам отследить потенциальную проблему в вашем скрипте и продолжит выполнение, будто filename указывает на обыкновенный файл.

Если PHP решил, что filename указывает на локальный файл, тогда он попытается открыть поток к этому файлу. Файл должен быть доступен PHP, так что вам следует убедиться, что права доступа на файл разрешают это. Если вы вкдючили безопасный режим или open_basedir, накладываются дальнейшие ограничения.

Если PHP решил, что filename указывает на зарегистрированный протокол и этот протокол зарегистрирован как сетевой URL, PHP проверит состояние директивы allow_url_fopen. Если она выключена, PHP выдаст предупреждение и вызов fopen закончится неудачей.

Замечание: Список поддерживаемых протоколов доступен в разделе Прил. M. Некоторые протоколы (обвёртки) поддерживают context и/или опции php.ini. Обратитесь к соответствующей странице с описанием используемого протокола для получения списка опций, которые могут быть установлены. (например, значение php.ini user_agent используется обвёрткой http). Для получения описания параметров contexts и zcontext, обратитесь к разделу Ссылка CLIII, Stream Functions.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0.

Замечание: Начиная с версии PHP 4.3.2, бинарный режим является режимом по умолчанию для всех платформ, которые различают бинарный и текстовый, режимы. Если у вас возникли проблемы после обновления, попробуйте использовать флаг ‘t’ в качестве обходного пути до тех пор, пока вы не измените свои скрипты для достижения большей портируемости, как отмечено выше.

Параметр mode указывает тип доступа, который вы запрашиваете у потока. Он может быть одним из следующих:

    Таблица 1. Список возможных режимов для fopen() используя mode
  • ‘r’ Открывает файл только для чтения; помещает указатель в начало файла.
  • ‘r+’ Окрывает файл для чтения и записи; помещяет указатель в начало файла.
  • ‘w’ Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует — пробует его создать.
  • ‘w+’ Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует — пробует его создать.
  • ‘a’ Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует — пытается его создать.
  • ‘a+’ Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует — пытается его создать.
  • ‘x’ Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов.
  • ‘x+’ Создаёт и открывает для чтения и записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст предупреждение уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). Эта опция поддерживается начиная с версии PHP 4.3.2 и выше, и работает только для локальных файлов.

Замечание: Разные семейства операционных систем имеют разные соглашения относительно окончанийя строк. Когда вы пишете текст и хотите вставить разрыв строки, вы должны использовать правильный(-ые) символ(ы) для вашей операционной системы. Системы семейства Unix используют n в качестве символа конца строки, системы семейства Windows используют rn в качестве символов окончания строки и системы семейства Macintosh используют r в качестве символа конца строки.

Если вы используете неверный символ конца строки при редактировании файлов, вы можете обнаружить, что при открытии эти файлы «смешно выглядят».

Windows предлагает флаг режима текстовой трансляции (‘t’), который автоматически переведёт n во время работы с файлом. И наоборот — также вы можете использовать ‘b’ чтобы принудительно включить бинарный (двоичный) режим, в котором ваши данные не будут преобразовываться. Чтобы использовать эти режимы, укажите ‘b’ или ‘t’ в качестве последней буквы параметра mode.

Так как установка флага трансляции по умолчанию зависит от SAPI и версии PHP, которую вы используете, рекомендуем явно задавать указанный флаг из соображений портируемости. Вы должны использовать режим ‘t’ если вы работаете с текстовым файлом и использовать n для разделения для обозначения конца строки в вашем скрипте, при этом не беспокоясь за читаемость ваших файлов в других приложениях типа «Блокнота». В противном случае вам следует использовать флаг ‘b’.

Если вы явно не укажете флаг ‘b’ во время работы с бинарными файлами, вы можете столкнуться со странной порчей ваших данных, включая испорченные файлы изображений и странные проблемы с символами rn.

Замечание: Из соображений портируемости, настоятельно рекомендуется всегда использовать флаг ‘b’ при открытии файлов с помощью fopen().

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

Необязательный третий параметр use_include_path может быть установлен в ‘1’ или TRUE, если вы также хотите провести поиск файла в include_path.

Если открыть файл не удалось, функция вернёт FALSE и сгенерирует ошибку уровня E_WARNING. Вы можете использовать @ для того, чтобы подавить это предупреждение.

Читать еще:  Php объявление констант
Пример 1. Примеры использования функции fopen()

Если вы сталкиваетесь с проблемами во время чтения или записи файлов, и вы используете PHP в виде серверного модуля, убедитесь в том, что процесс сервера имеет доступ к файлам и директориям, которые вы используете.

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

Пример 2 открывает удаленный HTML-файл и выводит его заголовок.
Пример 3 демонстрируется открытие и запись в FTP-файл.

Хотя для работы с FTP-файлами рекомендуется использовать специальные функции.

Заметьте, что запись в конец FTP-файла не поддерживается, так как файл не должен существовать, а должен создаваться. Если для FTP-доступа необходим пароль, то его можно указывать в строке адреса в виде ftp://user:password@ftp. example.com/path/file.

Такую же форму ввода пароля можно использовать и для протокола HTTP, когда требуется аутентификация типа Basic.

При использовании SSL, Microsoft IIS нарушает протокол, закрывая соединение без отправки индикатора close_notify. PHP сообщит об этом как о «SSL: Fatal Protocol Error» в тот момент, когда вы достигнете конца данных. Чтобы обойти это, вы должны установить error_reporting на уровень, исключающий E_WARNING. PHP версий 4.3.7 и старше умеет определять, что на стороне сервера находится проблемный IIS и не выводит предупреждение. Если вы используете fsockopen() для создания ssl:// сокета, вы сами отвечаете за определение и подавление этого предупреждения.

Замечание: Когда опция safe mode включена, PHP проверяет, имеет ли каталог, с которым вы собираетесь работать, такой же UID (владельца), как и выполняемый скрипт.

fopen

fopen — Открывает файл или URL

Описание

fopen() закрепляет именованный ресурс, указанный в аргументе filename, за потоком.

Список параметров

Если filename передан в форме «scheme://. «, он считается URL’ом и PHP проведёт поиск обработчика протокола (также известного как «обертка») для этой схемы. Если ни одна обёртка не закреплена за протоколом, PHP выдаст замечание, чтобы помочь вам отследить потенциальную проблему в вашем скрипте и затем продолжит выполнение, как если бы filename указывает на обыкновенный файл.

Если PHP решил, что filename указывает на локальный файл, тогда он попытается открыть поток к этому файлу. Файл должен быть доступен PHP, так что вам следует убедиться, что права доступа на файл это разрешают. Если вы включили безопасный режим или open_basedir, накладываются дальнейшие ограничения.

Если PHP решил, что filename указывает на зарегистрированный протокол и этот протокол зарегистрирован как сетевой URL, PHP проверит состояние директивы allow_url_fopen. Если она выключена, PHP выдаст предупреждение и вызов fopen закончится неудачей.

Список поддерживаемых протоколов доступен в разделе Supported Protocols and Wrappers. Некоторые протоколы (обертки) поддерживают контекст и/или опции php.ini . Обратитесь к соответствующей странице с описанием используемого протокола для получения списка опций, которые могут быть установлены. (например, значение php.ini user_agent используется оберткой http).

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

Параметр mode указывает тип доступа, который вы запрашиваете у потока. Он может быть одним из следующих вариантов:

Разные семейства операционных систем имеют разные соглашения относительно окончанийя строк. Когда вы пишете текст и хотите вставить разрыв строки, вы должны использовать правильные символы или (символ) для вашей операционной системы. Системы семейства Unix используют n в качестве символа конца строки, системы семейства Windows используют rn в качестве символов окончания строки и системы семейства Macintosh используют r в качестве символа конца строки.

Если вы используете неверный символ конца строки при редактировании файлов, вы можете обнаружить, что при открытии эти файлы «смешно выглядят».

Windows предлагает флаг режима текстовой трансляции (‘t’), который автоматически переведёт n в rn во время работы с файлом. И наоборот — вы также можете использовать ‘b’, чтобы принудительно включить бинарный режим, в котором ваши данные не будут преобразовываться. Чтобы использовать эти режимы, укажите ‘b’ или ‘t’ последней буквой параметра mode.

Так как установка флага трансляции по умолчанию зависит от SAPI и используемой версии PHP, рекомендуем явно задавать указанный флаг из соображений портируемости. Вы должны использовать режим ‘t’, если вы работаете с текстовым файлом и использовать n для обозначения конца строки в вашем скрипте, при этом не беспокоясь за читаемость ваших файлов в других приложениях типа «Блокнота». Во всех остальных случаях используйте флаг ‘b’.

Если вы явно не укажете флаг ‘b’ во время работы с бинарными файлами, вы можете столкнуться со странной порчей ваших данных, включая испорченные файлы изображений и странные проблемы с символами rn.

Из соображений портируемости, настоятельно рекомендуется всегда использовать флаг ‘b’ при открытии файлов с помощью fopen() .

Кроме того, из соображений портируемости, также настойчиво рекомендуется переписать старый код, который полагается на режим ‘t’, чтобы вместо этого он использовал правильные концы строк и режим ‘b’.

Необязательный третий параметр use_include_path может быть установлен в ‘1’ или TRUE, если вы также хотите провести поиск файла в include_path.

Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Stream Функции.

Возвращаемые значения

Возвращает указатель на файл в случае успешной работы, или FALSE в случае ошибки.

Ошибки

Если открыть файл не удалось, будет сгенерирована ошибка уровня E_WARNING. Вы можете использовать оператор @ для подавления этой ошибки.

Fopen открыть файл html

fopen — открывает файл или URL.

Описание

int fopen (string filename, string mode [, int use_include_path])

Если filename начинается с «http://» (нечувствительно к регистру), то HTTP 1.0 соединение открывается со специфицированным сервером, страница запрашивается методом HTTP GET и указатель файла возвращается в начало тела ответа. ‘Host:’-header отправляется вместе с запросом, чтобы обработать виртуальные хосты на основе имён.

Читать еще:  Messages list html recuerda

Начиная с PHP 4.3.0, если вы скомпилировали поддержку OpenSSL, вы можете использовать «https://» для открытия HTTP-соединения через SSL.

Обратите внимание, что указатель файла позволяет вам запрашивать только bodyтело ответа; для запрашивания шапки/header HTTP-ответа вам нужно использовать PHP 4.0.5 или новее; эти шапки будут храниться в переменной $http_response_header. Начиная с PHP 4.3.0, header-информация может быть запрошена с использованием функции file_get_wrapper_data().

HTTP-соединения являются read-only; вы не можете записывать данные или копировать файлы в HTTP-ресурс.

Версии до PHP 4.0.5 не обрабатывают HTTP-перенаправления. Поэтому директории обязаны иметь ведомые слэши.

Если filename начинается с «ftp://» (нечувствительно к регистру), открывается ftp-соединение со специфицированным сервером и возвращается указатель на запрашиваемый файл. Если сервер не поддерживает ftp пассивного режима, это не удастся сделать. Вы можете открывать файлы для чтения или записи через ftp (но не для того и другого одновременно). Если удалённый/remote файл уже существует на ftp-сервере и вы пытаетесь открыть его для записи, это не получится. Если вам нужно обновить существующие файлы по ftp, используйте ftp_connect() .

Если filename это «php://stdin», «php://stdout» или «php://stderr», будет открыт соответствующий поток stdio. (Это появилось в PHP 3.0.13; до этого такие имена файлов, как «/dev/stdin» или «/dev/fd/0», должны были использоваться для доступа к stdio-потокам.)

Если filename начинается ещё с чего-нибудь, файл будет открыт из файловой системы и будет возвращён указатель на открытый файл.

Если открыть файл не удалось, эта функция возвращает FALSE .

‘r’ — Открыть только для чтения; поместить указатель в начало файла.

‘r+’ — Открыть для чтения и записи; поместить указатель в начало файла.

‘w’ — Открыть только для записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.

‘w+’ — Открыть для чтения и записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.

‘a’ — Открыть только для записи; поместить указатель в конец файла. Если файл не существует, делается попытка создать его.

‘a+’ — Открыть для чтения и записи; поместить указатель в конец файла. Если файл не существует, делается попытка создать его.

Примечание: mode может содержать букву ‘b’. Это используется только в системах, различающих двоичные и текстовые файлы (т.е. в Windows. В Unix это бесполезно). Если не нужен, он игнорируется.

Вы можете использовать необязательный третий параметр и установить в него значение «1», если хотите найти файл также и в include_path.

Пример 1. fopen()

Если у вас проблемы с чтением и записью файлов и вы используете версии серверных модулей PHP, не забудьте убедиться, что используемые вами файлы и директории доступны для серверного процесса.

На платформе Windows мнемонизируйте (escape) все обратные слэши в пути к файлу или используйте обычные слэши.

Откройте файл HTML с помощью fopen (перенаправление)

Я хочу открыть файл HTTPS с PHP, но эта страница делает перенаправление на другую страницу, поэтому функция fopen не анализирует страницу, которую я хочу.

У меня есть этот код :

Когда я показываю ‘myHTMLPageWithParameters’ в браузере HTML, я вижу правильную страницу после перенаправления. Я просто ищу способ захватить код HTML второй страницы (после перенаправления). Спасибо за любую помощь

3 Ответа

Короче говоря: это не выполнимо надежным способом.

Это не перенаправление, выполненное сервером, вы получаете страницу, которую вы запросили. Затем эта страница перенаправляется на другую, но с использованием javascript. Javascript это интерпретируется браузером, а не php, curl или любой другой библиотекой.

Единственный способ, который я могу придумать, это использовать regex, чтобы найти location.href или location.top, а затем следовать этим перенаправлениям. Но опять же, есть много способов перенаправить страницу, вы не можете ожидать, чтобы разобрать их все!

Вы можете использовать FOLLOW_LOCATION ;

Проверьте это решение из другого сообщения SO:

Другой вариант-использовать curl вместо fopen, у которого есть опция, которую вы можете установить, сообщая ей следовать перенаправлениям (CURLOPT_FOLLOWLOCATION).

Похожие вопросы:

У меня есть сторонний файл с расширением .p и я пытаюсь, если это возможно, чтобы открыть его с помощью функции fopen : fopen(title.p) Это возвращает 3, который является идентификатором файла в.

Я тоже пытаюсь открыть файл const char *path = C:/1/123.somebinaryfile; FILE *f = fopen(path, rb); Но у меня есть ошибка Unable to read from file. Как я могу это исправить? Может быть, я должен.

Допустим, у меня есть сервер в www.myhost.com. Оттуда с помощью php я хочу получить документ html, который создает файл php www.anotherhost.com/somefile.php. Я также хочу использовать php для этого.

Прошло много времени с тех пор, как я использовал это. Как я могу усечь файл, открытый с помощью fopen() в текущем указателе файла? Я нахожусь на Windows, если нет универсального решения.

Я пишу простую систему заказов, где несколько чисел (заполненных внутри формы) записываются в другой файл .php (может быть также .html), используя функцию fopen . Это работает нормально, но после.

Интересно, есть ли способ заблокировать и разблокировать файл в Linux, когда я открываю файл с помощью fopen (а не open )? Основываясь на вопросе переполнения стека C fopen vs open , fopen.

Интересно, возможно ли 301 redirect в исключительно статическом сервере html nginx? Я знаю, что обычно невозможно заставить редирект работать только в html. На сервере apache можно выполнить.

Читать еще:  Learning all ru instrukcia index html

Я хотел бы знать, можно ли открыть каталог, а затем работать с fopen, чтобы открыть файл из него. Как в Примере: У меня есть MAINDIR и внутри него у меня есть file.txt, поэтому я хотел бы сделать.

В fopen(myfile, r+) какая разница между r+ и w+ открытым режимом? Я читал это: r откройте текстовый файл для чтения. w откройте текстовый файл для записи, усечение существующего файла до нулевой.

Я создал пользовательский фреймворк и сопутствующий ресурс bundle для использования в других проектах. Ресурс bundle включает в себя различные .sqlite и .файлы bin. Я пытаюсь открыть .bin-файл в.

Работа с файлами на php: открытие, запись, чтение

На самом деле, чем открыть php файл, не является большой проблемой. Бывает труднее открыть бутылку пива, когда находишься посреди леса. Но так думают лишь заядлые программисты. А для новичков поведаем обо всех возможностях php для работы с файлами:

Файлы php

Файлы с расширением php содержат в себе код написанный, на одноименном языке программирования. В отличие от других языков, php является серверным языком программирования. То есть он выполняется на стороне сервера. Поэтому для отладки его кода на клиентской машине должен быть установлен локальный сервер.

Для работы с файлами php используются специальные приложения – программные редакторы. Наиболее распространенными из них являются:

  • Dreamweaver.
  • PHPEdit.
  • Eclipse PHP Development.


При создании сайтов на основе php может потребоваться многократное использование программного кода. В таких ситуациях удобно подключать уже готовые решения, находящиеся в другом файле. Для этого используется конструкция include . Ее синтаксис:


Подключение файла также возможно с помощью конструкции require . В отличие от include она подключает файл еще до выполнения программного кода. С помощью require в коде возможно лишь одно обращение к этому файлу. При повторном обращении система выдаст сообщение о глобальной ошибке и остановит выполнение программы.

Конструкция include подключает источник лишь во время выполнения программы. Она поддерживает множественное чтение файла php . При возникновении ошибки будет выведено лишь предупреждающее сообщение, а исполнение кода продолжится со следующей строчки.

Открытие и закрытие файлов

В php все операции с файлами осуществляются в несколько этапов:

  • Открытие файла;
  • Редактирование содержимого;
  • Закрытие файла.

Для открытия файла используется функция fopen() . Ее синтаксис:

  • string filename – имя файла или абсолютный путь к нему. Если путь к файлу не будет указан, то будет произведен его поиск в текущем каталоге. При отсутствии искомого файла система выведет сообщение об ошибке. Пример:

  • string mode – указывает режим открытия файла. Принимаемые аргументом значения:
  • r – файл открыт только для чтения, файловый указатель устанавливается в начале;
  • r+ – файл открыт для чтения и записи;
  • w – создается новый файл только для записи. Если файл с таким именем уже существует, в нем происходит автоматическое удаление всех данных;
  • w+ — создается новый файл для записи и чтения. При существовании такого файла происходит полная перезапись его данных на новые;
  • a – файл открыт для записи. Указатель устанавливается в конце. То есть запись в файл php начнется не с начала, а с конца;
  • a+ – открытие файла в режиме чтения и записи. Запись начнется с конца;
  • b – режим работы с файлом, содержащим в себе двоичные данные (в двоичной системе исчисления). Этот режим доступен только в операционной системе Windows.

Для закрытия доступа к файлу служит функция fclose () . Синтаксис:

int fclose (int file) , где int file – дескриптор сайта, который нужно закрыть.

Чтение и запись файлов

Для простого отображения всего содержимого файла идеально подходит функция readfile () . Ее синтаксис:

readfile (string filename) , где string filename – строковое имя фала ( не дескриптор ).


Тот же самый файл можно прочитать с помощью функции fpassthru () . Она считывает данные от конечной позиции указателя и до конца файла. Ее синтаксис:

Для работы с функцией требуется открытие и закрытие файла. Пример:

Результат аналогичен предыдущему.

Функции для работы с файлами в php позволяют считывать содержимое построчно и посимвольно:

  • string fgets ( int file, int length) – функция считывает строку длиною length . Пример:

  • string fread (int file, int length) – по действию идентична предыдущей.

Для записи текстовых данных в файл существует две идентичные функции:

  • int fputs ( int file, string string [, int length ])
  • int fwrite ( int file, string string [, int length ])

Функции записывают в файл int file строку string string указанной длины int length ( необязательный аргумент ). Пример:

Создание и удаление файлов

Чтобы создать файл php , можно использовать функцию fopen() в режиме доступа « w » или « w+ ». Или функцию touch () . Она устанавливает время изменения файла. При отсутствии элемента с искомым именем он будет создан. Ее синтаксис:

Для создания копии файла используется функция copy() . В качестве аргументов она принимает имя оригинала и файла, куда нужно скопировать содержимое. Если он не существует, то будет создан. Синтаксис функции:


Удалить файл можно с помощью функции unlink() . Ее синтаксис:

Получение информации о файле

Для получения информации о файлах в php используется целый ряд функций:

  • bool fileexists (string filename) – проверяет, существует ли элемент;
  • int fileatime (string filename) – возвращает время последнего открытия;
  • int filesize (string filename) – возвращает байтовый размер файла;
  • string filetype (string filename) – тип файла.


Это еще не все возможности для работы с файлами, реализованные в php . Многие из методов и функций остались за кадром. Так что простор для самостоятельного познания еще велик.

Ссылка на основную публикацию
Adblock
detector