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
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
, STDOUT
và STDERR
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 [].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 nhau | 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. | 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 quyBị hạn chế bởi all cho phép_url_fopen | Không |
Bị hạn chế bởi allow_url_include | php://memory 0, php://memory 1, php://memory và php://memory 3. |
Cho phép đọc | php://memory 1, php://memory 0, php://memory 6, chỉ php://memory và php://memory 3. |
Cho phép viết | php://memory 9, $file = fopen['php://memory', 'rw+']; 0, $file = fopen['php://memory', 'rw+']; 1, php://memory 6, chỉ php://memory và php://memory 3. |
Cho phép nối thêm | php://memory 9, $file = fopen['php://memory', 'rw+']; 0, $file = fopen['php://memory', 'rw+']; 1, php://memory 6, chỉ php://memory và php://memory 3. [Tương đương với viết] |
Cho phép đọc và viết đồng thời | php://memory 6, chỉ php://memory và php://memory 3. |
Hỗ trợ Stat []stat[] | Không. Tuy nhiên, php://memory và php://memory 3 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://memory 0, php://memory 1, php://memory và php://memory 3. |
Cho phép đọc
php://memory
1, php://memory
0, php://memory
6, chỉ php://memory
và php://memory
3.
Cho phép viết
STDIN
1
php://memory
9, $file = fopen['php://memory', 'rw+'];
0, $file = fopen['php://memory', 'rw+'];
1, php://memory
6, chỉ php://memory
và php://memory
3.
Cho phép nối thêm
STDIN
2
php://memory
9, $file = fopen['php://memory', 'rw+'];
0, $file = fopen['php://memory', 'rw+'];
1, php://memory
6, chỉ php://memory
và php://memory
3. [Tương đương với viết]
Cho phép đọc và viết đồng thời
STDIN
4
php://memory
6, chỉ php://memory
và php://memory
3.
Cho phép đọc và viết đồng thời
STDIN
6
php://memory
6, chỉ php://memory
và php://memory
3.
Hỗ trợ Stat []
STDIN
7
Không. Tuy nhiên, php://memory
và php://memory
3 hỗ trợ fstat [].