(Php 4, Php 5, Php 7, Php 8)
Fopen - Mở tệp hoặc URL — Opens file or URL
Sự mô tả
fopen (& nbsp; & nbsp; & nbsp; & nbsp; chuỗi ________ 0, & nbsp; & nbsp; ): Tài nguyên | Sai(
string $filename,
string $mode,
bool $use_include_path =
false,
?resource $context = null
): resource|false
Thông số
filenameNếu filename có dạng "Sơ đồ: // ...", thì nó được coi là URL và PHP sẽ tìm kiếm một trình xử lý giao thức (còn được gọi là trình bao bọc) cho sơ đồ đó. Nếu không có trình bao bọc cho giao thức đó được đăng ký, PHP sẽ phát ra thông báo để giúp bạn theo dõi các vấn đề tiềm năng trong tập lệnh của mình và sau đó tiếp tục như thể filename chỉ định một tệp thông thường.
Nếu PHP đã quyết định rằng filename chỉ định một tệp cục bộ, thì nó sẽ cố gắng mở một luồng trên tệp đó. Tệp phải có thể truy cập được vào PHP, vì vậy bạn cần đảm bảo rằng các quyền truy cập tệp cho phép truy cập này. Nếu bạn đã kích hoạt các hạn chế thêm Open_basingir có thể áp dụng.
Nếu PHP đã quyết định rằng filename chỉ định một giao thức đã đăng ký và giao thức đó được đăng ký dưới dạng URL mạng, PHP sẽ kiểm tra để đảm bảo rằng cho phép cho phép được bật. Nếu nó bị tắt, PHP sẽ phát ra cảnh báo và cuộc gọi Fopen sẽ thất bại.
Ghi chú::
Danh sách các giao thức được hỗ trợ có thể được tìm thấy trong các giao thức và trình bao bọc được hỗ trợ. Một số giao thức (còn được gọi là $mode1) hỗ trợ các tùy chọn $mode2 và/hoặc php.ini. Tham khảo trang cụ thể cho giao thức được sử dụng để biết danh sách các tùy chọn có thể được đặt. (ví dụ: giá trị php.ini $mode3 được sử dụng bởi trình bao bọc $mode4).
Trên nền tảng Windows, hãy cẩn thận để thoát khỏi bất kỳ dấu gạch chéo ngược nào được sử dụng trong đường dẫn đến tệp hoặc sử dụng dấu gạch chéo phía trước.
$mode5
$mode6Tham số $mode6 chỉ định loại truy cập bạn yêu cầu vào luồng. Nó có thể là bất kỳ điều nào sau đây:
Danh sách các chế độ có thể cho fopen () sử dụng $mode6fopen() using $mode6fopen (& nbsp; & nbsp; & nbsp; & nbsp; chuỗi ________ 0, & nbsp; & nbsp; ): Tài nguyên | Sai | Thông số |
filename | Nếu filename có dạng "Sơ đồ: // ...", thì nó được coi là URL và PHP sẽ tìm kiếm một trình xử lý giao thức (còn được gọi là trình bao bọc) cho sơ đồ đó. Nếu không có trình bao bọc cho giao thức đó được đăng ký, PHP sẽ phát ra thông báo để giúp bạn theo dõi các vấn đề tiềm năng trong tập lệnh của mình và sau đó tiếp tục như thể filename chỉ định một tệp thông thường. |
Nếu PHP đã quyết định rằng filename chỉ định một tệp cục bộ, thì nó sẽ cố gắng mở một luồng trên tệp đó. Tệp phải có thể truy cập được vào PHP, vì vậy bạn cần đảm bảo rằng các quyền truy cập tệp cho phép truy cập này. Nếu bạn đã kích hoạt các hạn chế thêm Open_basingir có thể áp dụng. | Nếu PHP đã quyết định rằng filename chỉ định một giao thức đã đăng ký và giao thức đó được đăng ký dưới dạng URL mạng, PHP sẽ kiểm tra để đảm bảo rằng cho phép cho phép được bật. Nếu nó bị tắt, PHP sẽ phát ra cảnh báo và cuộc gọi Fopen sẽ thất bại. |
Ghi chú: | Danh sách các giao thức được hỗ trợ có thể được tìm thấy trong các giao thức và trình bao bọc được hỗ trợ. Một số giao thức (còn được gọi là $mode1) hỗ trợ các tùy chọn $mode2 và/hoặc php.ini. Tham khảo trang cụ thể cho giao thức được sử dụng để biết danh sách các tùy chọn có thể được đặt. (ví dụ: giá trị php.ini $mode3 được sử dụng bởi trình bao bọc $mode4). |
Trên nền tảng Windows, hãy cẩn thận để thoát khỏi bất kỳ dấu gạch chéo ngược nào được sử dụng trong đường dẫn đến tệp hoặc sử dụng dấu gạch chéo phía trước. | $mode6fseek() has no effect, writes are always appended. |
Tham số $mode6 chỉ định loại truy cập bạn yêu cầu vào luồng. Nó có thể là bất kỳ điều nào sau đây: | Danh sách các chế độ có thể cho fopen () sử dụng $mode6fseek() only affects the reading position, writes are always appended. |
$use_include_path0 | Chỉ mở để đọc; Đặt con trỏ tệp ở đầu tệp.fopen() call will fail by returning false and generating an error of level $use_include_path9. If the file does not exist, attempt to create it. This is equivalent to specifying false0 flags for the underlying false1 system call. |
$use_include_path1 | Mở để đọc và viết; Đặt con trỏ tệp ở đầu tệp. |
$use_include_path2 | Chỉ mở để viết; Đặt con trỏ tệp ở đầu tệp và cắt tệp về độ dài bằng không. Nếu tệp không tồn tại, hãy cố gắng tạo nó.flock()) before attempting to modify the file, as using $use_include_path2 could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested). |
$use_include_path3 | Mở để đọc và viết; Nếu không, nó có hành vi tương tự như $use_include_path2. |
$use_include_path5 | Chỉ mở để viết; Đặt con trỏ tệp ở cuối tệp. Nếu tệp không tồn tại, hãy cố gắng tạo nó. Trong chế độ này, FSEEK () không có hiệu lực, ghi luôn được thêm vào. |
Ghi chú::
Danh sách các giao thức được hỗ trợ có thể được tìm thấy trong các giao thức và trình bao bọc được hỗ trợ. Một số giao thức (còn được gọi là $mode1) hỗ trợ các tùy chọn $mode2 và/hoặc php.ini. Tham khảo trang cụ thể cho giao thức được sử dụng để biết danh sách các tùy chọn có thể được đặt. (ví dụ: giá trị php.ini $mode3 được sử dụng bởi trình bao bọc $mode4).
Trên nền tảng Windows, hãy cẩn thận để thoát khỏi bất kỳ dấu gạch chéo ngược nào được sử dụng trong đường dẫn đến tệp hoặc sử dụng dấu gạch chéo phía trước.
Windows cung cấp cờ dịch chế độ văn bản ($context4) sẽ dịch một cách minh bạch $context1 sang $context2 khi làm việc với tệp. Ngược lại, bạn cũng có thể sử dụng $context7 để buộc chế độ nhị phân, sẽ không dịch dữ liệu của bạn. Để sử dụng các cờ này, chỉ định $context7 hoặc $context4 là ký tự cuối cùng của tham số $mode6.
Chế độ dịch mặc định là $context7. Bạn có thể sử dụng chế độ $context4 nếu bạn đang làm việc với các tệp văn bản đơn giản và bạn sử dụng $context1 để phân định các kết thúc dòng của bạn trong tập lệnh của bạn, nhưng mong đợi các tệp của bạn có thể đọc được với các ứng dụng như phiên bản cũ của Notepad. Bạn nên sử dụng $context7 trong tất cả các trường hợp khác.
Nếu bạn chỉ định cờ 'T' khi làm việc với các tệp nhị phân, bạn có thể gặp phải sự cố lạ với dữ liệu của mình, bao gồm các tệp hình ảnh bị hỏng và các sự cố lạ với các ký tự $context2.
Ghi chú::
Đối với tính di động, bạn cũng khuyên bạn nên viết lại mã sử dụng hoặc dựa vào chế độ $context4 để nó sử dụng chế độ dòng chính xác và chế độ $context7.
null9Lưu ý: $mode6 bị bỏ qua cho PHP: // đầu ra, php: // input, php: // stdin, php: // stdout, php: // stderr và php: // fd stream wrappers.: The $mode6 is ignored for php://output, php://input, php://stdin, php://stdout, php://stderr and php://fd stream wrappers.
Tham số null9 thứ ba tùy chọn có thể được đặt thành '1' hoặc filename1 nếu bạn cũng muốn tìm kiếm tệp trong bao gồm_path.filename1 if you want to search for the file in the include_path, too.
$mode2Một tài nguyên luồng ngữ cảnh.resource.
Trả về giá trị
Trả về một tài nguyên con trỏ tệp thành công hoặc false về lỗifalse on failure
Errors/Exceptions
Sau khi thất bại, một $use_include_path9 được phát ra.$use_include_path9 is emitted.
Thay đổi
7.0.16, 7.1.2 | Tùy chọn $context0 đã được thêm vào. |
Ví dụ
Ví dụ #1 fopen () Ví dụfopen() examples
filename6
Ghi chú
Cảnh báo
Khi sử dụng SSL, Microsoft IIS sẽ vi phạm giao thức bằng cách đóng kết nối mà không gửi chỉ báo filename7. PHP sẽ báo cáo đây là "SSL: Lỗi giao thức gây tử vong" khi bạn đạt đến cuối dữ liệu. Để làm việc xung quanh điều này, giá trị của error_Reporting nên được hạ xuống mức không bao gồm các cảnh báo. PHP có thể phát hiện phần mềm máy chủ IIS Buggy khi bạn mở luồng bằng trình bao bọc filename8 và sẽ triệt tiêu cảnh báo. Khi sử dụng fsockopen () để tạo ổ cắm filename9, nhà phát triển có trách nhiệm phát hiện và ngăn chặn cảnh báo này.fsockopen() to create an filename9 socket, the developer is responsible for detecting and suppressing this warning.
Ghi chú::
Đối với tính di động, bạn cũng khuyên bạn nên viết lại mã sử dụng hoặc dựa vào chế độ $context4 để nó sử dụng chế độ dòng chính xác và chế độ $context7.
Ghi chú::
Đối với tính di động, bạn cũng khuyên bạn nên viết lại mã sử dụng hoặc dựa vào chế độ $context4 để nó sử dụng chế độ dòng chính xác và chế độ $context7.is_dir() function before calling fopen().
Lưu ý: $mode6 bị bỏ qua cho PHP: // đầu ra, php: // input, php: // stdin, php: // stdout, php: // stderr và php: // fd stream wrappers.
- null9
- Tham số null9 thứ ba tùy chọn có thể được đặt thành '1' hoặc filename1 nếu bạn cũng muốn tìm kiếm tệp trong bao gồm_path.
- $mode2
- Một tài nguyên luồng ngữ cảnh.
- Trả về giá trị
- Trả về một tài nguyên con trỏ tệp thành công hoặc false về lỗi
- Sau khi thất bại, một $use_include_path9 được phát ra.
- Thay đổi
- Phiên bản
- Sự mô tả
- 7.0.16, 7.1.2
- Tùy chọn $context0 đã được thêm vào.
- Ví dụ
- Ví dụ #1 fopen () Ví dụ
Ghi chú ¶
Cảnh báo
filename2
Khi sử dụng SSL, Microsoft IIS sẽ vi phạm giao thức bằng cách đóng kết nối mà không gửi chỉ báo filename7. PHP sẽ báo cáo đây là "SSL: Lỗi giao thức gây tử vong" khi bạn đạt đến cuối dữ liệu. Để làm việc xung quanh điều này, giá trị của error_Reporting nên được hạ xuống mức không bao gồm các cảnh báo. PHP có thể phát hiện phần mềm máy chủ IIS Buggy khi bạn mở luồng bằng trình bao bọc filename8 và sẽ triệt tiêu cảnh báo. Khi sử dụng fsockopen () để tạo ổ cắm filename9, nhà phát triển có trách nhiệm phát hiện và ngăn chặn cảnh báo này. ¶
Nếu bạn đang gặp vấn đề với việc đọc và ghi vào các tệp và bạn đang sử dụng phiên bản mô -đun máy chủ của PHP, hãy nhớ để đảm bảo rằng các tệp và thư mục bạn đang sử dụng có thể truy cập vào quy trình máy chủ.
filename3
Hàm này cũng có thể thành công khi filename là một thư mục. Nếu bạn không chắc chắn liệu filename là tệp hay thư mục, bạn có thể cần sử dụng hàm is_dir () trước khi gọi fopen (). ¶
Xem thêm
filename4
filename5
filename6Các giao thức và giấy gói được hỗ trợ ¶
fclose () - Đóng một con trỏ tệp mở
filename7
filename8
filename9
filename0
filename1fgets () - Nhận dòng từ con trỏ tệp ¶
fread () - Tệp an toàn nhị phân đọc
filename2
filename3
filename4
filename1fwrite () - Viết tệp an toàn nhị phân ¶
fsockopen () - Mở Internet hoặc kết nối ổ cắm tên miền UNIX
filename6
filename7
filename1file () - đọc toàn bộ tệp vào một mảng ¶
file_exists () - Kiểm tra xem tệp hoặc thư mục có tồn tại không
filename9
filename0
filename1
filename2
filename3
filename4
filename5
filename1is_readable () - cho biết liệu một tệp có tồn tại hay không và có thể đọc được không ¶
file_exists () - Kiểm tra xem tệp hoặc thư mục có tồn tại không
filename7
filename8
filename9
filename1is_readable () - cho biết liệu một tệp có tồn tại hay không và có thể đọc được không ¶
stream_set_timeout () - Đặt khoảng thời gian chờ trên luồng
$mode01
$mode02
$mode03
filename1popen () - Mở con trỏ tệp quy trình ¶
stream_set_timeout () - Đặt khoảng thời gian chờ trên luồng
$mode05
popen () - Mở con trỏ tệp quy trình ¶
stream_context_create () - Tạo ngữ cảnh Stream
$mode06
$mode07
$mode08
$mode09
$mode10
filename1Umask () - Thay đổi UMASK hiện tại ¶
file_exists () - Kiểm tra xem tệp hoặc thư mục có tồn tại không
$mode12
$mode13
$mode14
$mode15is_readable () - cho biết liệu một tệp có tồn tại hay không và có thể đọc được không ¶
stream_set_timeout () - Đặt khoảng thời gian chờ trên luồng
$mode16
$mode17
$mode18popen () - Mở con trỏ tệp quy trình ¶
Cảnh báo
$mode19
Khi sử dụng SSL, Microsoft IIS sẽ vi phạm giao thức bằng cách đóng kết nối mà không gửi chỉ báo filename7. PHP sẽ báo cáo đây là "SSL: Lỗi giao thức gây tử vong" khi bạn đạt đến cuối dữ liệu. Để làm việc xung quanh điều này, giá trị của error_Reporting nên được hạ xuống mức không bao gồm các cảnh báo. PHP có thể phát hiện phần mềm máy chủ IIS Buggy khi bạn mở luồng bằng trình bao bọc filename8 và sẽ triệt tiêu cảnh báo. Khi sử dụng fsockopen () để tạo ổ cắm filename9, nhà phát triển có trách nhiệm phát hiện và ngăn chặn cảnh báo này. ¶
stream_set_timeout () - Đặt khoảng thời gian chờ trên luồng
$mode20
$mode21
$mode22
$mode23
$mode24
filename1popen () - Mở con trỏ tệp quy trình ¶
stream_context_create () - Tạo ngữ cảnh Stream
$mode26
Umask () - Thay đổi UMASK hiện tại ¶
stream_context_create () - Tạo ngữ cảnh Stream
Umask () - Thay đổi UMASK hiện tại
Splfileobject ¶
10 năm trước
$mode28
Keithm tại Aoeex dot nospam dot com ¶ ¶
21 năm trước
$mode29
$mode30
$mode31
filename1K-Gun tại git dot io ¶ ¶
3 năm trước
$mode33
$mode34
filename1WVSS tại gmail dot com ¶
5 tháng trước
filename4
filename5
filename6Sean Downey ¶
14 năm trước
$mode39
$mode40
$mode41
filename1