Verification: a143cc29221c9be0

Php code get file content

GET запрос при помощи cURL

cURL - мощный инструмент для отправки запросов. Только взгляните сколько он всего умеет.

Для того, чтобы отправить запрос, нужно создать объект при помощи функции curl_init(), а затем следует настроить его.

Все настройки, которые вы можете найти по этой ссылке. Там вы найдете опции, которые мы будем устанавливать функцией curl_setopt, в дальнейших примерах.

Пример простого GET запроса при помощи cURL:

$url = 'https://phpstack.ru/';

$headers = []; // создаем заголовки

$curl = curl_init(); // создаем экземпляр curl

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_POST, false); // 
curl_setopt($curl, CURLOPT_URL, $url);

$result = curl_exec($curl);

В итоге, переменная $result снова содержит html код страницы этого сайта.

  • CURLOPT_VERBOSE - установлена в true для вывода дополнительной информации. Записывает вывод в поток STDERR, или файл, указанный параметром CURLOPT_STDERR.
  • CURLOPT_RETURNTRANSFER - установлена в true, для того чтобы вернуть ответ сервера. Если вам ответ сервера не нужен, то можете убрать эту опцию.
  • Информация о других опциях

Если в результате сервер вернет нам редирект, то мы по нему автоматически не перейдем. А иногда это бывает полезно. Чтобы cURL автоматически шел по редиректу нужно установить опцию CURLOPT_FOLLOWLOCATION.

   curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

С установленной опцией скрипт автоматически перейдет по вернувшемуся редиректу и вернет ответ уже с итоговой страницы.

POST запрос при помощи cURL

Теперь давайте отправим post запрос на адрес https://httpbin.org/anything

$url = 'https://httpbin.org/anything'; // url, на который отправляется запрос
$post_data = [ // поля нашего запроса
    'field1' => 'val_1',
    'field2' => 'val_2',
];

$headers = []; // заголовки запроса

$post_data = http_build_query($post_data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true); // true - означает, что отправляется POST запрос

$result = curl_exec($curl);

Отлично, с GET и POST запросами в cURL мы немного освоились. Теперь разберемся с заголовками, которые мы можем отсылать в запросе.

Заголовки устанавливаются при помощи опции CURLOPT_HTTPHEADER Чтобы получше узнать, для чего нужна эта опция давайте попробуем отправить POST запрос в формате JSON

Подробнее о работе с JSON в PHP

cURL: POST запрос в формате JSON

Отличия конфигурации JSON запроса от обычного POST запроса заключается в том, что мы кодируем поля при помощи json_encode() И добавляем заголовок Content-Type: application/json

$url = 'https://httpbin.org/anything';

$headers = ['Content-Type: application/json']; // заголовки нашего запроса

$post_data = [ // поля нашего запроса
    'field1' => 'val_1',
    'field2' => 'val_2',
];

$data_json = json_encode($post_data); // переводим поля в формат JSON

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);

$result = curl_exec($curl); // результат POST запроса 

cURL: GET запрос в формате JSON

GET запрос в формате JSON отправляется так же как и POST запрос, просто нужно CURLOPT_CUSTOMREQUEST установить в 'GET'

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');

А в остальном код идентичен предыдущему примеру. Хотя, надо признать, GET запросы с телом - это нонсенс. Обычно для этих целей используется POST, PUT или PATCH, но был у меня один случай... Поэтому вот GET запрос в формате JSON.

cURL и другие виды HTTP запросов: PUT, DELETE, HEAD, PATCH, OPTIONS, CONNECT и т.д.

Стоп, Дмитрий, прекрати выдумывать виды запросов!

Ничего я не выдумываю: HTTP протокол предполагает множество типов HTTP запросов просто POST и GET являются более распространенными.

Чтобы отправить PUT запрос, нужно установить опцию CURLOPT_PUT таким образом:

curl_setopt($curl, CURLOPT_PUT, true);

Это делается по тому же принципу, как и CURLOPT_POST. Но что делать с остальным зоопарком запросов? Разве у cURL есть CURLOPT_DELETE или CURLOPT_HEAD? Нет.

Для того, чтобы отправлять другие виды запросов есть другая опция: CURLOPT_CUSTOMREQUEST

Вместо строки curl_setopt($curl, CURLOPT_POST, true); мы явно задаем имя запроса опцией CURLOPT_CUSTOMREQUEST:

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'HEAD');
// или
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
// или
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
// или
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'OPTIONS');

Замечание: Не используйте эту возможность пока не убедитесь, что сервер поддерживает данный тип запроса.

Как получить заголовки ответа

В предыдущем примере мы научились посылать заголовки. Самый правильный способ принять заголовки:

$ch = curl_init();

$headers = [];

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// ... остальные опции

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,  function($curl, $header) use (&$response_headers)  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) 

Иногда можно встретить другой вариант получения заголовков ответа. К сожалению, они не совсем правильные и могут работать некорректно в некоторых случаях.

Рассмотрим такой пример:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// ...

$response = curl_exec($ch);

// Then, after your curl_exec call:
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);

Мы сначала определяем размер заголовка, с помощью CURLINFO_HEADER_SIZE затем вырезаем его из ответа. К сожалению, это может не срабатывать, когда используется прокси или в некоторых случаях редиректа.

Скачивание больших файлов с помощью cURL

Для того, чтобы скачать большой файл пригодится этот способ:

$url = 'https://example.com/big_file.zip'; // откуда скачиваем файл
$path = __DIR__ . '/big_file.zip';  // куда сохраняем файл

$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);

Обратите внимание, если вы будете использовать file_get_contents для скачивания файлов, то файл сначала загружается в оперативную память, а потом сохраняется на диск. Поэтому если файл действительно большой, то скорее всего вашему серверу не хватит памяти. Также к памяти будет требователен следующий код:

$ch = curl_init('https://example.ru/big_file.zip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$data = curl_exec($ch);
curl_close($ch);

file_put_contents(__DIR__ . '/big_file.zip', $data);

Здесь мы скачиваем файл при помощи cURL в оперативную память, а затем сохраняем его на диск. Не смотря на то, что этот способ не годится для скачивания больших файлов, с помощью него можно вполне сохранить простую веб страницу.

Параллельные cURL запросы в PHP

Для чего могут потребоваться многопоточные запросы? Например у нас есть много URL адресов:

$urls = [
    'https://httpbin.org/anything?1',
    'https://httpbin.org/anything?2',
    'https://httpbin.org/anything?3',
];

И если мы будем по очереди отправлять запросы, то второй запрос начнется только после того, как закончился первый и так далее, а это существенно увеличивает время работы скрипта.

Выглядит это так:

$results = [];
foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $results[$url] = curl_exec($ch);
    curl_close($ch);
}

var_dump($results);

Теперь в $results у нас содержится массив, где ключи - это url адреса, а значения - результаты запросов. Однако запросы выполняются долго. Но мы можем это ускорить.

Как выполнить 3 запроса одновременно? В этом нам поможет curl_multi_

Давайте решим конкретную задачу при помощи параллельных curl запросов. Нам нужно отправить одновременно 3 запроса.

$urls = [
    'https://httpbin.org/anything?1',
    'https://httpbin.org/anything?2',
    'https://httpbin.org/anything?3',
];


// array of curl handles
$multiCurl = [];
// data to be returned
$results = [];
// multi handle
$mh = curl_multi_init();
foreach ($urls as $url) {
    $multiCurl[$url] = curl_init();
    curl_setopt($multiCurl[$url], CURLOPT_URL, $url);
    curl_setopt($multiCurl[$url], CURLOPT_HEADER, 0);
    curl_setopt($multiCurl[$url], CURLOPT_RETURNTRANSFER, 1);
    curl_multi_add_handle($mh, $multiCurl[$url]);
}
$index = null;
do {
    curl_multi_exec($mh, $index);
} while ($index > 0);
// get content and remove handles
foreach ($multiCurl as $k => $ch) {
    $results[$k] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($mh, $ch);
}
// close
curl_multi_close($mh);

var_dump($results); // в $results у нас содержатся ответы на наши 3 запроса

Такие параллельные запросы выполняются значительно быстрее чем поочередные.

cURL запросы с сохранением и загрузкой cookie из файла

cURL позволяет нам установить cookie при передачи запросов, а также автоматически принимать и устанавливать cookie, которые нам возвращает сервер, сохраняя их между запросами.

Давайте рассмотрим такой пример:

$cookiePath = __DIR__ . '/cookie.txt';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://yandex.ru/");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

//CURLOPT_COOKIEJAR - файл, куда пишутся куки после закрытия коннекта, например после curl_close()
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiePath);

//CURLOPT_COOKIEFILE - файл, откуда читаются куки.
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiePath);

$result = curl_exec($ch);

// теперь в этой переменной будут содержаться cookie, которые установил сервер
$cookies = curl_getinfo($ch, CURLINFO_COOKIELIST);

curl_close($ch);

// выводим на экран содержимое файла cookie.txt, которое установил нам Yandex.
// можете изучить сколько всего он сохраняет на ваш компьютер при первом же заходе.
echo file_get_contents($cookiePath);

Теперь cookie у нас хранятся в файле cookie.txt в директории со скриптом (если вы ничего не меняли). Если мы совершаем повторные запросы, то cURL автоматически берет и отправляет cookie на сервер, как и обычный браузер. Таким образом мы можем авторизироваться на сайте и сохранить сеанс между запросами.

Передача cookie без файлов

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://example.com/");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);

// мы напрямую указываем cookie, которые хотим передать на сервера
curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID=123456');

$result = curl_exec($ch);

curl_close($ch);

Иммитация браузера с помощью cURL

Иногда сайт, к которому мы обращаемся может фильтровать запросы, защищаясь от парсинга. Если для этого используются упрощенные способы защиты, например проверка User-Agent, то мы можем легко притвориться, что являемся реальным польователем, который взаимодействует с сайтом через браузер, мы можем послать заголовки и cookie, которые обычно посылает браузер.

В данном примере установлены заголовки, которые посылает Chrome.

$url = 'https://phpstack.ru/';

$headers = [
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: ru,en-US;q=0.9,en;q=0.8',
];

$cookieFile = __DIR__ . '/cookie.txt';

$curl = curl_init(); // создаем экземпляр curl

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_POST, false); //
curl_setopt($curl, CURLOPT_URL, $url);

$result = curl_exec($curl);

В простых ситуациях этого хватает. Но если используется защита при помощи javascript или что-то более продвинутое, то здесь cURL бессилен, и следует использовать либо BAS либо Zennoposter. Либо если вы хотите попытать счастье с PHP, то Selenium.

Не используйте эти знания в противоправных целях.

cURL запросы через прокси

Простой пример для отправки запросов через proxy. Если ваш прокси предполагает авторизацию, то раскомментируйте соответствующие строчки.

$url = 'http://dynupdate.no-ip.com/ip.php'; // тут мы можем узнать свой IP адрес
$proxy = '127.0.0.1:8888';
//$proxyauth = 'user:password'; // если прокси с авторизацией, то раскомметируйте

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth); // если прокси с авторизацией, то раскомметируйте
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$html = curl_exec($ch);
curl_close($ch);

echo $html;

Отправка файлов

Для того, чтобы отправить файлы на сервер, мы просто заполняем поля POST запроса, указывая там специальный класс CURLFile. На сервере вы можете получить отправленные файлы, при помощи суперглобального массива $_FILES.

$url = 'https://phpstack.ru/';

$postFields = [
    'photo1' => new \CURLFile( __DIR__ . '/img1.jpg' ),
    'photo2' => new \CURLFile( __DIR__ . '/img2.jpg' ),
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

Авторизация с помощью cURL

HTTP Авторизация

Чтобы с помощью cURL авторизироваться на сайте, который использует Basic HTTP-аутентификацию нужно установить опцию CURLOPT_USERPWD, в которой будет наш логин и пароль.

Пример:

$login = 'test_login'; // наш логин
$password = 'test_password'; // наш пароль
$url = 'https://phpstack.ru/';

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);

$result = curl_exec($ch);

curl_close($ch);

OAuth авторизация

$url = 'https://phpstack.ru/';
$oauthToken = 'Bearer dsfgdsfgdsfgdsfgdsfg'; // наш токен

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: $oauthToken"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);

$html = curl_exec($ch);

curl_close($ch);

Авторизация через форму

Давайте применим полученные нами знания и авторизируемся на каком-нибудь сайте. Для этого нужно посмотреть куда форма отправляет данные и отправить туда то же самое.

Допустим на сайте есть такая форма:

Тогда наш cURL запрос должен быть сформирован так:

$url = 'http://phpstack.ru/admin/'; // url, на который отправляется запрос

$postData = [ // поля нашего запроса
    'login' => 'our_login', // наш логин
    'password' => 'our_password', // наш пароль
];

$cookieFile = __DIR__ . '/cookie.txt';

// притворяемся браузером
$headers = [
    'Connection: keep-alive',
    'Upgrade-Insecure-Requests: 1',
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Encoding: gzip, deflate',
    'Accept-Language: ru,en-US;q=0.9,en;q=0.8',
];

$post_data = http_build_query($post_data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieFile);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true); // true 

$result = curl_exec($curl);

В $result у нас ответ сервера, мы можем проверить, что на странице находится сообщение об успешной авторизации и дальше гулять по личному кабинету сайта. Да, кстати, не используйте эти знания в противоправных целях.

Автоматическое построение запросов

Есть очень интересный сервис: https://curlbuilder.com/ - он поможет вам построить запрос для консольного приложения.

Перевод консольной команды curl в PHP

И вот еще один сервис, который переводит консольную команду curl в PHP: https://incarnate.github.io/curl-to-php/

Так вы можете создать простые запросы на cURL в PHP не создавая их вручную.

Лайфхак

В консоли браузера, во вкладке сеть, вы можете кликнуть правой кнопкой мыши и скопировать любой запрос в виде команды cURL, а потом с помощью сервиса curl-to-php перевести запрос в PHP. Теперь вы вообще можете сконвертировать в cURL абсолютно любой запрос, который посылает ваш браузер.

Как работать с cURL гораздо проще

Вы можете спросить: почему у cURL такие кривые и страшные методы? У вас может возникнуть желание взять и создать обертку для работы с cURL, чтобы вы могли не писать каждый раз большие куски некрасивого кода, а писать все проще, например так:

$curl = new Curl();
$curl->get('https://www.example.com/search', [
    'q' => 'keyword',
]);

Или так:

$curl = new Curl();
$curl->post('https://www.example.com/login/', [
    'username' => 'myusername',
    'password' => 'mypassword',
]);

К счастью, такая обертка уже написана и найти ее можно здесь: https://github.com/php-curl-class/php-curl-class

Просто установите ее при помощи: composer require php-curl-class/php-curl-class и не работайте с кривыми кусками кода, которые таковы вероятно потому, что cURL изначально консольное приложение.

POST и GET запросы без cURL

С помощью PHP мы можем отправить простой GET запрос используя функцию file_get_contents.

Пример:

$result = file_get_contents('https://phpstack.ru/');

Теперь у нас в переменной $result записан весь html код главной страницы этого сайта. Мы совершили GET запрос, а html код - это ответ на него.

При помощи file_get_contents мы также можем отправить POST запрос.

Пример:

$postData = http_build_query([
    'var1' => 'текст 1',
    'var2' => 'текст 2'
]);

$opts = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postData
    ]
];

$context = stream_context_create($opts);

$result = file_get_contents('https://httpbin.org/anything', false, $context);

Подробнее о том, какие опции можно передавать в stream_context_create, вы можете изучить здесь: http://docs.php.net/manual/ru/context.http.php

В $result мы получили ответ на POST запрос. httpbin.org - это сторонний сервис, который вы можете использовать для отладки запросов. Он возвращает нам наш собственный запрос в формате JSON и еще некоторую информацию. Так мы можем увидеть, что мы отправляем в своих запросах.

Как видите file_get_contents - полезная функция, которая не только позволяет читать файлы на нашем сервере, но еще и отправлять запросы.

Подробнее о ней вы можете прочитать здесь: https://www.php.net/manual/ru/function.file-get-contents.php

Другие инструменты для работы с запросами в PHP

Для работы с запросами есть еще более мощный инструмент: Guzzle

What is a File?

A file is simply a resource for storing information on a computer.

Files are usually used to store information such as;

  • Configuration settings of a program
  • Simple data such as contact names against the phone numbers.
  • Images, Pictures, Photos, etc.

In this tutorial, you will learn-

  • PHP File Formats Support
  • PHP files Functions
  • PHP File_exists Function
  • PHP Fopen Function
  • PHP Fwrite Function
  • PHP Fclose Function
  • PHP Fgets Function
  • PHP Copy Function
  • Deleting a file
  • PHP File_get_contents Function

PHP File Formats Support

PHP file functions support a wide range of file formats that include;

  • File.txt
  • File.log
  • File.custom_extension i.e. file.xyz
  • File.csv
  • File.gif, file.jpg etc
  • Files provide a permanent cost effective data storage solution for simple data compared to databases that require other software and skills to manage DBMS systems.
  • You want to store simple data such as server logs for later retrieval and analysis
  • You want to store program settings i.e. program.ini

PHP files Functions

PHP provides a convenient way of working with files via its rich collection of built in functions.

Operating systems such as Windows and MAC OS are not case sensitive while Linux or Unix operating systems are case sensitive.

Adopting a naming conversion such as lower case letters only for file naming is a good practice that ensures maximum cross platform compatibility.

Let’s now look at some of the most commonly used PHP file functions.

PHP File_exists Function

This function is used to determine whether a file exists or not.

  • It comes in handy when we want to know if a file exists or not before processing it.
  • You can also use this function when creating a new file and you want to ensure that the file does not already exist on the server.

The file_exist function has the following syntax.

HERE,

  • “file_exists()” is the PHP function that returns true if the file exists and false if it does not exist.
  • “$file_name” is the path and name of the file to be checked

The code below uses file_exists function to determine if the file my_settings.txt exists.

  Save the above code in a file named file_function.php Assuming you saved the file in phptuts folder in htdocs, open the URL http://localhost/phptuts/file_function.php in your browser You will get the following results.

PHP Fopen Function

The fopen function is used to open files. It has the following syntax

  HERE,

  • “fopen” is the PHP open file function
  • “$file_name” is the name of the file to be opened
  • “$mode” is the mode in which the file should be opened, the table below shows the modes
Mode Description
r
  • Read file from beginning.
  • Returns false if the file doesn’t exist.
  • Read only
r+
  • Read file from beginning
  • Returns false if the file doesn’t exist.
  • Read and write
w
  • Write to file at beginning
  • truncate file to zero length
  • If the file doesn’t exist attempt to create it.
  • Write only
w+
  • Write to file at beginning, truncate file to zero length
  • If the file doesn’t exist attempt to create it.
  • Read and Write
a
  • Append to file at end
  • If the file doesn’t exist attempt to create it.
  • Write only
a+
  • Php append to file at end
  • If the file doesn’t exist attempt to create it
  • Read and write
  • “$use_include_path” is optional, default is false, if set to true, the function searches in the include path too.
  • “$context” is optional, can be used to specify the context support.

PHP Fwrite Function

The fwrite function is used to write files.

It has the following syntax

  HERE,

  • “fwrite” is the PHP function for writing to files
  • “$handle” is the file pointer resource
  • “$string” is the data to be written in the file.
  • “$length” is optional, can be used to specify the maximum file length.

PHP Fclose Function

Is is used to close a file in php which is already open

It has the following syntax.

  HERE,

  • “fclose” is the PHP function for closing an open file
  • “$handle” is the file pointer resource.

Let’s now look at an example that creates my_settings.txt.

We will use the following functions.

  • Fopen
  • Fwrite
  • fclose

The code below “create_my_settings_file.php” implements the above example.

Open a file
   
Closing a file
Create File
    

Testing the code

Open the URL http://localhost/phptuts/create_my_settings.php in your browser.

You will get the following page

.

Note: if your disk is full or you do not have permission to write files, you will get an error message.

Switch back to the URL http://localhost/phptuts/file_function.php .

What results do you get?

PHP Fgets Function

The fgets function is used to read php files line by line. It has the following basic syntax. fgets($handle); HERE,

  • “$fgets” is the PHP function for reading file lines
  • “$handle” is the file pointer resource.

Let’s now look at an example that reads my_settings.txt file using the fopen and fgets functions.

The code below read_my_settings.php implements the above example.

  HERE,

  • “fopen” function returns the pointer to the file specified in the file path
  • “die()” function is called if an error occurs. It displays a message and exists execution of the script

PHP Copy Function

The PHP copy function is used to copy files. It has the following basic syntax. copy($file,$copied_file); HERE,

  • “$file” specifies the file path and name of the file to be copied.
  • “copied_file” specified the path and name of the copied file

The code below illustrates the implementation

Deleting a file

The unlink function is used to delete the file. The code below illustrates the implementation.

PHP File_get_contents Function

The file_get_contents function is used to read the entire file contents.

The code below illustrates the implementation.

The difference between file_get_contents and fgets is that file_get_contents returns the file data as a string while fgets reads the file line by line.

"; // Enables display of line feeds
echo file_get_contents("my_settings.txt");
echo "
"; // Terminates pre tag ?>