Hướng dẫn php write file to memory - ghi tệp php vào bộ nhớ

Có cách nào trong PHP để tạo một tệp có thể được đọc bởi fopen giống như một tệp thông thường, nhưng tồn tại thực tế trong bộ nhớ? Đối với bảo mật, tôi muốn không bao giờ nhấn đĩa, nhưng do các yếu tố bên ngoài, tôi cần truyền một đường dẫn hệ thống tập tin dọc theo mã.

tmpfile() gần, nhưng điều này dường như viết tệp vào đĩa.

  • PHP
  • memory-mapped-files

hỏi ngày 28 tháng 2 năm 2018 lúc 7:32Feb 28, 2018 at 7:32

Hướng dẫn php write file to memory - ghi tệp php vào bộ nhớ

JustinjustinJustin

40.2K74 Huy hiệu vàng192 Huy hiệu bạc284 Huy hiệu đồng74 gold badges192 silver badges284 bronze badges

5

  • Làm cách nào để viết và đọc dữ liệu từ php://memory mặc dù?

    Ngày 28 tháng 2 năm 2018 lúc 7:43

  • $file = fopen('php://memory', 'rw+');

    Ngày 28 tháng 2 năm 2018 lúc 7:49

  • Vâng, tôi sử dụng chức năng bên thứ 3 cần thiết để mong đợi một đường dẫn tệp chuỗi, việc vượt qua tay cầm tệp bộ nhớ không hoạt động. Bất kỳ ý tưởng?

    Ngày 28 tháng 2 năm 2018 lúc 8:02

  • Tôi không biết trong trường hợp đó, thật xấu hổ khi nó không chấp nhận luồng đầu vào.

    Ngày 28 tháng 2 năm 2018 lúc 8:05

Ví dụ #4 Php: // Filter/Write =Accessing various I/O streams

Ví dụ #5 PHP: // bộ nhớ và php: // temp không thể tái sử dụng

PHP: // Bộ nhớ và PHP: // TEMP không thể tái sử dụng, tức là sau khi các luồng đã bị đóng, không có cách nào để tham khảo chúng lại.

Không có người dùng đóng góp ghi chú cho trang này.

PHP: // - Truy cập các luồng I/O khác nhauSTDIN is unaffected. It is recommended that you simply use the constants STDIN, STDOUT and STDERR instead of manually opening streams using these wrappers.

Sự mô tả

php://input

PHP cung cấp một số luồng I/O linh tinh cho phép truy cập vào các luồng đầu vào và đầu ra của PHP, các mô tả tệp đầu vào, đầu ra và lỗi tiêu chuẩn, các luồng tệp tạm thời được hỗ trợ trong bộ nhớ và đĩa và các bộ lọc có thể thao tác các tài nguyên tệp khác như chúng được đọc từ và viết thành.

php://output

PHP: // stdin, php: // stdout và php: // stderrprint and echo.

php://fd

PHP: // stdin, php: // stdout và php: // stderr cho phép truy cập trực tiếp vào luồng đầu vào hoặc đầu ra tương ứng của quy trình PHP. Stream tham chiếu một bộ mô tả tệp trùng lặp, vì vậy nếu bạn mở PHP: // stdin và sau đó đóng nó, bạn chỉ đóng bản sao của bộ mô tả-luồng thực tế được tham chiếu bởi STDIN không bị ảnh hưởng. Bạn nên sử dụng các hằng số STDIN, STDOUTSTDERR thay vì mở các luồng theo cách thủ công bằng cách sử dụng các trình bao bọc này.

PHP: // stdin chỉ đọc, trong khi php: // stdout và php: // stderr chỉ viết.

Php: // Input là luồng chỉ đọc cho phép bạn đọc dữ liệu thô từ thân yêu cầu. PHP: // Đầu vào không có sẵn với enctype="multipart/form-data".sys_get_temp_dir() function.

PHP: // Đầu ra là một luồng chỉ ghi cho phép bạn viết vào cơ chế bộ đệm đầu ra giống như in và echo.

php://filter

PHP: // FD cho phép truy cập trực tiếp vào bộ mô tả tệp đã cho. Ví dụ: PHP: // FD/3 đề cập đến Bộ mô tả tệp 3.readfile(), file(), and file_get_contents() where there is otherwise no opportunity to apply a filter to the stream prior the contents being read.

PHP: // bộ nhớ và php: // temp

PHP: // Bộ nhớ và PHP: // TEMP là các luồng đọc-ghi cho phép dữ liệu tạm thời được lưu trữ trong một trình bao bọc giống như tệp. Sự khác biệt duy nhất giữa hai là bộ nhớ PHP: // sẽ luôn lưu trữ dữ liệu của nó trong bộ nhớ, trong khi PHP: // TEMP sẽ sử dụng tệp tạm thời sau khi lượng dữ liệu được lưu trữ đạt giới hạn được xác định trước (mặc định là 2 MB). Vị trí của tệp tạm thời này được xác định theo cách tương tự như hàm sys_get_temp_dir ().
Giới hạn bộ nhớ của PHP: // TEMP có thể được kiểm soát bằng cách nối thêm /maxmemory:NN, trong đó tmpfile()0 là lượng dữ liệu tối đa để giữ trong bộ nhớ trước khi sử dụng tệp tạm thời, tính bằng byte.Ví dụ #5 PHP: // bộ nhớ và php: // temp không thể tái sử dụng
PHP: // Bộ nhớ và PHP: // TEMP không thể tái sử dụng, tức là sau khi các luồng đã bị đóng, không có cách nào để tham khảo chúng lại.Không có người dùng đóng góp ghi chú cho trang này.
PHP: // - Truy cập các luồng I/O khác nhauSự mô tả
PHP cung cấp một số luồng I/O linh tinh cho phép truy cập vào các luồng đầu vào và đầu ra của PHP, các mô tả tệp đầu vào, đầu ra và lỗi tiêu chuẩn, các luồng tệp tạm thời được hỗ trợ trong bộ nhớ và đĩa và các bộ lọc có thể thao tác các tài nguyên tệp khác như chúng được đọc từ và viết thành.Sự mô tả
PHP cung cấp một số luồng I/O linh tinh cho phép truy cập vào các luồng đầu vào và đầu ra của PHP, các mô tả tệp đầu vào, đầu ra và lỗi tiêu chuẩn, các luồng tệp tạm thời được hỗ trợ trong bộ nhớ và đĩa và các bộ lọc có thể thao tác các tài nguyên tệp khác như chúng được đọc từ và viết thành.PHP: // stdin, php: // stdout và php: // stderr

Tùy chọn

Tóm tắt trình bao quy
Thuộc tínhĐược hỗ trợ
Bị hạn chế bởi all cho phép_url_fopenKhông
Bị hạn chế bởi allow_url_include php://memory0, php://memory1, php://memoryphp://memory3.
Cho phép đọc php://memory1, php://memory0, php://memory6, chỉ php://memoryphp://memory3.
Cho phép viết php://memory9, $file = fopen('php://memory', 'rw+');0, $file = fopen('php://memory', 'rw+');1, php://memory6, chỉ php://memoryphp://memory3.
Cho phép nối thêm php://memory9, $file = fopen('php://memory', 'rw+');0, $file = fopen('php://memory', 'rw+');1, php://memory6, chỉ php://memoryphp://memory3. (Tương đương với viết)
Cho phép đọc và viết đồng thời php://memory6, chỉ php://memoryphp://memory3.
Hỗ trợ Stat ()stat() Không. Tuy nhiên, php://memoryphp://memory3 hỗ trợ fstat ().fstat().
Hỗ trợ hủy liên kết ()unlink() Không
Bị hạn chế bởi allow_url_includerename() Không
Bị hạn chế bởi allow_url_includemkdir() Không
Bị hạn chế bởi allow_url_includermdir() Không
Bị hạn chế bởi allow_url_includestream_select() php://memory0, php://memory1, php://memoryphp://memory3.

Cho phép đọc

php://memory1, php://memory0, php://memory6, chỉ php://memoryphp://memory3.

Cho phép viết

STDIN1

php://memory9, $file = fopen('php://memory', 'rw+');0, $file = fopen('php://memory', 'rw+');1, php://memory6, chỉ php://memoryphp://memory3.

Cho phép nối thêm

STDIN2

php://memory9, $file = fopen('php://memory', 'rw+');0, $file = fopen('php://memory', 'rw+');1, php://memory6, chỉ php://memoryphp://memory3. (Tương đương với viết)

Cho phép đọc và viết đồng thời

STDIN4

php://memory6, chỉ php://memoryphp://memory3.

Cho phép đọc và viết đồng thời

STDIN6

php://memory6, chỉ php://memoryphp://memory3.

Hỗ trợ Stat ()

STDIN7

Không. Tuy nhiên, php://memoryphp://memory3 hỗ trợ fstat ().