php://

php:// — Доступ до різних потоків введення-виводу

Опис

PHP надає кілька різноманітних потоків введення-виводу, які дозволяють отримати доступ до власних потоків введення-виводу PHP, до дескрипторів стандартного введення, виведення та потоку помилок, до тимчасових файлових потоків у пам'яті та на диску, та фільтрів, які можуть маніпулювати іншими файловими ресурсами у міру їхнього зчитування або запису.

php://stdin, php://stdout та php://stderr

php://stdin, php://stdout та php://stderr дозволяють отримати прямий доступ до відповідних потоків введення або виведення процесу PHP. Потік вказує на копію файлового дескриптора, так що якщо ви відкриєте php://stdin і потім закриєте його, ви закриєте тільки вашу копію дескриптора. Актуальний потік, на який посилається STDIN, залишається незмінним. Рекомендується просто використовувати константи STDIN STDOUT і STDERR замість ручного відкриття потоків, використовуючи ці обгортки.

Потік php://stdin призначений лише читання, тоді як php://stdout і php://stderr призначені лише запису.

php://input

php://input є потоком тільки для читання, який дозволяє читати необроблені дані з тіла запиту. php://input недоступний у POST-запитах з enctype="multipart/form-data"якщо опція enable_post_data_readingвключена.

php://output

php://output є потоком тільки для запису, який дозволяє вам записати дані у вихідний буфер аналогічно, як це роблять функції print і echo

php://fd

php://fd надає прямий доступ до вказаного файлового дескриптора. Наприклад, php://fd/3 відноситься до файлового дескриптора 3.

php://memory та php://temp

php://memory та php://temp є потоками для читання/запису і дозволяють зберігати тимчасові дані у файлоподібній обгортці. Єдина різниця між ними полягає в тому, що php://memory завжди зберігатиме дані в оперативній пам'яті, тоді як php://temp буде використовувати тимчасовий файл у тому випадку, коли обсяг інформації, що зберігається, досягне заданого ліміту (за замовчуванням 2 Мб) . Розташування цього тимчасового файлу визначається аналогічно функції sys_get_temp_dir()

Розмір ліміту для php://temp може встановлюватися шляхом додавання /maxmemory:NN, гдеNN — це максимальний розмір даних у байтах для зберігання пам'яті перед використанням тимчасового файла.

Застереження

Модулям PHP може знадобитися стандартний потік введення-виводу і вони можуть спробувати перетворити заданий потік на стандартний потік введення-виведення. Це перетворення може завершитися помилкою для потоків пам'яті, оскільки для такого приведення потрібна функція fopencookie() мови Сі. Така функція мови Сі недоступна у операційних системах Windows.

php://filter

php://filter - це вид мета-обгортки, призначений для вирішення застосування фільтрів до потоку під час відкриття. Це корисно для функціонально повних файлових функцій, таких як readfile() file() і file_get_contents()де немає можливості застосувати фільтр до потоку до того, як вміст буде прочитаний.

Потік php://filter приймає такі параметри як частину свого шляху. В одному шляху можна вказати кілька ланцюжків фільтрів. Будь ласка, ознайомтеся з прикладами та особливостями використання цих параметрів.

Параметри для php://filter

НазваниеОпис
resource=<потік для фільтрації>Цей параметр є потрібним. Він показує потоку, що його потрібно відфільтрувати.
read=<список фільтрів для застосування до ланцюжка читання>Цей параметр є необов'язковим. Одне або кілька імен фільтрів може бути вказано тут, розділених вертикальною межею (`
write=<список фільтрів для застосування до ланцюжка запису>Цей параметр є необов'язковим. Одне або кілька імен фільтрів може бути вказано тут, розділених вертикальною межею (`
<список фільтрів для застосування до обох ланцюжків читання та запису>Будь-який список фільтрів, які використовуються без префіксів read=илиwrite=, буде застосовано до обох потоків на читання та запис за необхідності.

Опції

Основна інформація (для php://filter дивіться інформацію по обгортці, яка піддається фільтрації)

АтрибутПоддержка
Обмеження по allow_url_fopenНі
Обмеження по allow_url_includeтільки php://inputphp://stdinphp://memoryиphp://temp
Читаннятільки php://stdinphp://inputphp://fdphp://memoryиphp://temp
Запистільки php://stdoutphp://stderrphp://outputphp://fdphp://memoryиphp://temp
Додаваннятільки php://stdoutphp://stderrphp://outputphp://fdphp://memoryиphp://temp. . (еквівалентно запису)
Одночасне читання та запистільки php://fdphp://memoryиphp://temp
Поддержкаstat()ні. Проте, php://memoryиphp://temp підтримують fstat()
Поддержкаunlink()Ні
Поддержкаrename()Ні
Поддержкаmkdir()Ні
Поддержкаrmdir()Ні
Поддержкаstream_select()тільки php://stdinphp://stdoutphp://stderrphp://fdиphp://temp

Приклади

Приклад #1 php://temp/maxmemory

Цей необов'язковий параметр дозволяє встановити ліміт пам'яті, перш ніж php://temp почне використовувати тимчасовий файл.

Loading...

Приклад #2 php://filter/resource=<потік для фільтрації>

Цей параметр повинен бути розташований наприкінці вашої специфікації php://filter і повинен вказувати на потік, який ви хочете фільтрувати.

Loading...

Приклад #3 php://filter/read=<список фільтрів для застосування до ланцюжка читання>

Цей параметр приймає один або більше імен фільтрів, розділених вертикальною рисою

Loading...

Приклад #4 php://filter/write=<список фільтрів для застосування до ланцюжка запису>

Цей параметр приймає один або більше імен фільтрів, розділених вертикальною рисою

Loading...

Приклад #5 php://memory та php://temp не можна перевикористовувати

php://memory та php://temp не можна перевикористовувати, тобто після закриття потоків неможливо послатися на них знову.

Loading...