Làm cách nào để ghi đè lên một tệp trong PHP?
Hàm file_put_contents() của PHP là một lối tắt hữu ích để kết xuất một chuỗi vào một tệp (so với việc sử dụng fopen, fputs, v.v.). Theo mặc định, nó sẽ tạo một tệp mới nếu nó không tồn tại hoặc ghi đè lên tệp nếu nó tồn tại. Gần đây, tôi đã đọc lại tài liệu về chức năng này và phát hiện ra rằng cũng có thể nối thêm vào một tệp có file_put_contents Show
Ghi vào một tệp mới/ghi đè lên một tệp hiện cóTruyền tên tệp và chuỗi để ghi vào tệp (cũng có thể truyền một mảng chứa luồng nhưng điều đó nằm ngoài phạm vi của bài đăng này) và một tệp mới sẽ được tạo chứa nội dung của chuỗi hoặc một tệp hiện có sẽ được tạo file_put_contents('/path/to/filename', $data); Lưu ý rằng thư mục bạn muốn ghi tệp phải tồn tại và có thể ghi được khi người dùng tập lệnh đang chạy dưới dạng. Nếu ghi đè lên một tệp hiện có thì tệp đó phải có thể ghi được vì người dùng đang chạy tập lệnh dưới dạng Nối vào một tập tin hiện cóNhư tôi đã phát hiện ra gần đây, cũng có thể nối thêm vào một tệp hiện có bằng file_put_contents. Hàm có thể nhận tham số thứ ba chứa danh sách các cờ được nối với toán tử OR nhị phân Để thêm vào một tệp, hãy chuyển cờ FILE_APPEND như vậy file_put_contents('/path/to/filename', $data, FILE_APPEND); Khi ghi đè lên một tệp hiện có, tệp phải có thể ghi được khi người dùng tập lệnh đang chạy dưới dạng Đôi khi, ngay cả Ctrl-F5 cũng không thực hiện được mẹo. Tuy nhiên, bạn có thể đánh lừa bộ đệm nghĩ rằng chúng đang nhận được thứ gì đó khác bằng cách thêm một tham số vào cuối URL. Miễn là nó được gắn nhãn là thứ mà máy chủ không tìm kiếm, thì máy chủ (trong trường hợp này là Moodle) sẽ không nhận thấy sự khác biệt, nhưng bộ đệm sẽ nghĩ rằng chúng PHẢI quay lại máy chủ để lấy phiên bản mới Nếu đã có một số tham số, hãy thêm tham số mới sau dấu & (thường có). Nếu không, bạn cần thêm dấu ? e. g, trang này là http. // tâm trạng. org/mod/diễn đàn/thảo luận. php?d=33376 Để buộc làm mới, bạn có thể gửi, nói http. // tâm trạng. org/mod/diễn đàn/thảo luận. php?d=33376&sadfsdgsddg=dasfdzfzd hoặc bất kỳ thứ rác rưởi nào khác RẤT hơi rủi ro, nhưng nó giải quyết được vấn đề Trung bình của xếp hạng. Hữu ích (1) Trả lời Chris Jeffries bởi Helen Foster - Thứ Sáu, ngày 18 tháng 11 năm 2005, 9. 35 giờ chiều Cảm ơn Chris - một thủ thuật hữu ích. Trung bình của xếp hạng. - Trả lời Terri Bateman Lại. ghi đè lên các tập tin tài nguyênbởi Steve Petersen - Thứ Tư, ngày 21 tháng 9 năm 2005, 4. 40 giờ sáng Tôi cũng gặp khó khăn này--Tôi đã thử bắt buộc làm mới nhưng chúng không hiệu quả. Tôi nghi ngờ vấn đề là Moodle khăng khăng tải các tài nguyên như vậy trong một khung riêng biệt và khung đó không được làm mới mặc dù toàn bộ "trang" đều có (sử dụng Firefox trên linux). Chỉ xóa bộ nhớ cache dường như hoạt động. Trung bình của xếp hạng. - Trả lời Steve Petersen bởi Helen Foster - Thứ Tư, ngày 21 tháng 9 năm 2005, 6. 35 giờ sáng Hmm, tôi đã nghĩ rằng việc bắt buộc làm mới sẽ tải lại nội dung khung (có lẽ ngoại trừ trong IE Trung bình của xếp hạng. - Trả lời Helen Foster bởi Steve Petersen - Thứ Tư, ngày 21 tháng 9 năm 2005, 8. 25 giờ sáng Cảm ơn vì đã trả lời nhanh chóng. Trung bình của xếp hạng. - Trả lời Steve Petersen bởi Helen Foster - Thứ Năm, ngày 22 tháng 9 năm 2005, 4. 47 giờ sáng Xin chào Steve, Trung bình của xếp hạng. - Trả lời Helen Foster bởi Heather P - Thứ Năm, ngày 17 tháng 11 năm 2005, 8. 06 giờ chiều Chúng tôi cũng gặp sự cố làm mới và buộc phải kiểm tra trên một máy tính khác để đảm bảo các thay đổi đã được thực hiện. Trung bình của xếp hạng. - Trả lời Heather P bởi Jamie Smith - Thứ Sáu, ngày 18 tháng 11 năm 2005, 4. 08 giờ sáng Thử cái này trong tập tin của bạn. php trong thư mục gốc của Moodle, hãy chỉnh sửa dòng tệp trong đó chỉ định thời gian tệp được lưu trong bộ đệm. Đó là dòng 13 Mặc định được đặt thành 24 giờ (tính bằng giây) Tôi đặt của tôi là 0, đóng trình duyệt, thay đổi tệp và kiểm tra. Mỗi khi tôi thay đổi tệp, thay đổi đó được phản ánh Vấn đề được giải quyết. Tôi hy vọng nó hoạt động cho phần còn lại của bạn Trung bình của xếp hạng. - Trả lời Jamie Smith bởi Jamie Smith - Thứ Sáu, ngày 18 tháng 11 năm 2005, 5. 24 giờ sáng Về giải pháp trước đó, hãy thận trọng Gần đây tôi đã được chủ nhà giàu kinh nghiệm hơn của mình cho biết rằng điều này có thể gây ra tải quá mức trên máy chủ của bạn tùy thuộc vào số lượng người dùng đồng thời Mặt khác, một giải pháp khả thi khác mà tôi đã tìm thấy là đặt tệp của bạn ở một vị trí khác với thư mục trong thư mục dữ liệu Moodle Tôi giữ các tệp được cập nhật trong một thư mục được tạo qua FTP ở một vị trí bên ngoài thư mục cài đặt Moodle. Sau đó, tôi trỏ tới các tệp này bằng cách sử dụng vị trí URL đầy đủ. Điều này bỏ qua các tập tin. sử dụng php và dường như cung cấp một giải pháp. Tuy nhiên, điều này có thể không an toàn hoặc thuận tiện vì không phải tất cả người dùng/nhà phát triển đều có quyền truy cập FTP đầy đủ Chúc may mắn Trung bình của xếp hạng. - Trả lời Heather P Lại. ghi đè lên các tập tin tài nguyênbởi Chris Lamb - Thứ Sáu, ngày 18 tháng 11 năm 2005, 5. 39 giờ chiều Chào Heather Việc bạn nhận được phiên bản mới nhất nếu bạn dùng thử một máy khác cho thấy rằng đó là bộ đệm trên máy đang chứa phiên bản cũ - nếu đó là bộ đệm được giữ trên máy chủ proxy của tổ chức của bạn thì tôi đã nghĩ rằng tất cả các máy trong tổ chức của bạn Bạn đã thử thay đổi cài đặt bộ đệm trong trình duyệt của mình chưa? . ) Bạn có thể thay đổi tần suất trình duyệt kiểm tra phiên bản mới của các trang được lưu trữ. Ngoài ra, hãy thử xóa bộ đệm (Công cụ >> Tùy chọn Internet >> nút Xóa tệp. ) Hi vọng điêu nay co ich Chris Trung bình của xếp hạng. - Trả lời Chris Lamb bởi Heather P - Thứ sáu, ngày 18 tháng 11 năm 2005, 9. 53 giờ chiều Chào bạn chúng tôi không có máy chủ proxy và tôi đã đặt cài đặt bộ đệm trong IE để làm mới mỗi lần truy cập trang. Có lẽ IE đã thực sự phá vỡ cài đặt đó và việc tôi làm gì với nó thực sự không quan trọng. Có lẽ tôi cần kiểm tra trang web của Microsoft để xem liệu họ có vấn đề chứ không phải chúng tôi không. Cảm ơn nhiều cây thạch nam Trung bình của xếp hạng. - Trả lời Heather P bởi David Brighton - Thứ Năm, ngày 22 tháng 12 năm 2005, 12. 07 giờ sáng Có ai có một câu trả lời cho điều này? . htaccess, đặt lại cài đặt bộ đệm của trình duyệt và đó vẫn là sự cố. Ngay cả khi nó xuất hiện ở đây, nếu bạn cập nhật ảnh hồ sơ của mình, nó sẽ không xuất hiện cho đến khi bạn làm mới trang. Tôi đã thử đặt lại tập tin. cài đặt bộ đệm php, nhưng điều đó cũng không hoạt động. Cũng đã thử thêm thẻ meta vào tiêu đề của trang để không có bộ đệm. Đó là một vấn đề trong IE và Firefox. Đối với tôi thì không sao, nhưng bây giờ tôi bắt đầu bị giáo viên và học sinh nói với tôi rằng có lỗi trong tâm trạng Có lời khuyên nào không? Trung bình của xếp hạng. - Trả lời David Brighton bởi Keith Allpress - Thứ Năm, ngày 22 tháng 12 năm 2005, 7. 13 giờ sáng Caching thực sự là một điều khá đơn giản, nhưng rất ít người dành thời gian để hiểu đúng về nó. Trung bình của xếp hạng. Hữu ích (1) Trả lời Keith Allpress bởi David Brighton - Thứ Năm, ngày 22 tháng 12 năm 2005, 6. 21 giờ đêm Cảm ơn Keith đã trả lời toàn diện của bạn Trích dẫn. Bạn đang cố gắng đạt được điều gì? Tôi muốn mọi người ngừng gọi cho tôi để nói với tôi rằng có lỗi và tài nguyên/hình ảnh cá nhân của họ, v.v. không được cập nhật trên moodle. Tôi liên tục nói với họ về những lợi ích của việc có thể cập nhật tài nguyên ngay lập tức cho học viên, vì vậy bạn có thể hiểu tại sao họ cảm thấy thất vọng. Tôi đã có một lần thử vào thời gian tập tin vào lúc này và điều đó dường như đang hoạt động cho đến bây giờ |