File_put_contents trong PHP không hoạt động

Tôi hiện đang cố gắng sử dụng file_put_contents để cập nhật tệp JSON của tôi. Đây là giao diện PHP của tôi hiện tại

$result = file_put_contents['Resources/logs/file.json', $newJsonString];
if[$result === true] {
    echo "true";
} else {
    echo "false";
}

Tuy nhiên, nó luôn trả về false. Tuy nhiên, tôi đã đặt quyền truy cập thư mục thành 777 cho CẢ HAI Resourceslogs. Tôi cũng đã đặt quyền đối với tệp thành 777 cho file.json

Đường dẫn cũng đúng, vì file_get_contents hoạt động với cùng một đường dẫn từ cùng một tệp

Để chứng minh thêm quan điểm của mình, tôi cũng đã chạy

$jsonString = file_get_contents['Resources/logs/file.json'];
$data = json_decode[$jsonString];
$data->coins = $data->coins + $coins;
$data->uses = $data->uses + 1;
print_r[$data];
$newJsonString = json_encode[$data];
$result = file_put_contents['Resources/logs/file.json', $newJsonString];
if[$result === true] {
    echo "true";
} else {
    echo "false";
}
0 để cấp quyền cho thư mục Resources [và mọi thứ bên trong] được ghi vào bởi người dùng
$jsonString = file_get_contents['Resources/logs/file.json'];
$data = json_decode[$jsonString];
$data->coins = $data->coins + $coins;
$data->uses = $data->uses + 1;
print_r[$data];
$newJsonString = json_encode[$data];
$result = file_put_contents['Resources/logs/file.json', $newJsonString];
if[$result === true] {
    echo "true";
} else {
    echo "false";
}
2 [tôi cho rằng sẽ cho phép tệp JSON được ghi vào bằng cách chạy PHP

Tôi không biết điều này có hữu ích không, nhưng tôi cũng đang chạy tập lệnh PHP này bằng cách gửi dữ liệu

$jsonString = file_get_contents['Resources/logs/file.json'];
$data = json_decode[$jsonString];
$data->coins = $data->coins + $coins;
$data->uses = $data->uses + 1;
print_r[$data];
$newJsonString = json_encode[$data];
$result = file_put_contents['Resources/logs/file.json', $newJsonString];
if[$result === true] {
    echo "true";
} else {
    echo "false";
}
3 tới tập lệnh đó qua JavaScript từ một máy chủ/trang web khác

Tại sao trên thế giới file_put_contents VẪN trả về sai và không ghi vào tệp?

Mã bổ sung

Đây là toàn bộ đoạn mã, bao gồm cả phần file_put_contents

$jsonString = file_get_contents['Resources/logs/file.json'];
$data = json_decode[$jsonString];
$data->coins = $data->coins + $coins;
$data->uses = $data->uses + 1;
print_r[$data];
$newJsonString = json_encode[$data];
$result = file_put_contents['Resources/logs/file.json', $newJsonString];
if[$result === true] {
    echo "true";
} else {
    echo "false";
}

…và đây là tệp JSON

{"coins":"0","uses":"0"}

Mọi trợ giúp sẽ được đánh giá cao, tôi đã cố gắng khắc phục sự cố này cả ngày rồi

Chỉnh sửa 1

Tôi quên đề cập đến điều này, nhưng mã này đã hoạt động hoàn toàn tốt vào ngày hôm qua trong khoảng một giờ. Sau đó, đột nhiên nó ngừng hoạt động và bắt đầu làm cho tệp JSON trống

Chỉnh sửa 2

Tôi vừa xóa nhật ký lỗi Apache và tập lệnh hoạt động trở lại [điều này tốt]. Tuy nhiên, file_put_contents vẫn đang trở lại false. Chuyện gì đang xảy ra…

Chỉnh sửa 3

Cảm ơn Laurent Wartel, tôi đã cập nhật câu lệnh if của mình cho file_put_contents và có vẻ như nó không còn trả về false nữa

Đối số đầu tiên là bắt buộc và nó được sử dụng để xác định tên tệp nơi dữ liệu sẽ được ghi

Đối số thứ hai là bắt buộc và được sử dụng để xác định dữ liệu được ghi trong tệp

Đối số thứ ba là tùy chọn, được sử dụng để xác định việc mở tệp hoặc ghi dữ liệu. Có thể sử dụng bất kỳ giá trị nào sau đây trong đối số này

FILE_USE_INCLUDE_PATH
Nó được sử dụng để tìm kiếm tệp trong thư mục bao gồm

FILE_APPEND
Nếu tệp tồn tại, nó được sử dụng để thêm dữ liệu vào cuối tệp

LOCK_EX
Nó được sử dụng để đặt khóa độc quyền trên tệp khi ghi

Đối số thứ tư là tùy chọn và được sử dụng để xác định hành vi của luồng hoặc ngữ cảnh để xử lý tệp

Hàm trả về số ký tự được ghi vào tệp và trả về giá trị Sai nếu không có dữ liệu nào được ghi vào tệp

file_put_contents[] Ví dụ về chức năng

Các cách sử dụng khác nhau của hàm file_put_contents[] đã được trình bày trong phần tiếp theo của hướng dẫn này bằng nhiều ví dụ. Bạn đã đặt các quyền đọc và ghi cần thiết cho thư mục chứa tệp trước khi thực hành các ví dụ của hướng dẫn này; . Chạy lệnh sau để đặt tất cả quyền cho thư mục, ‘/var/www/html/php’

$ sudo chmod - R 777 /var/www/html/php

Ví dụ 1. Ghi/Ghi đè Nội dung vào Tệp

Tạo một tệp PHP với tập lệnh sau sẽ viết văn bản trong tệp văn bản nằm trong thư mục, '/var/www/html/php'. Nếu nhiệt độ. txt tồn tại trước đó, thì file_put_contents[] sẽ ghi đè lên nội dung của tệp. Nếu nhiệt độ. txt không tồn tại, thì hàm file_put_contents[] sẽ tự động tạo tệp trước khi ghi. Tiếp theo, hàm file_get_contents[] được sử dụng trong tập lệnh để kiểm tra xem văn bản đã được ghi đúng vào tệp hay chưa

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên nếu văn bản được viết đúng trong tệp

Ví dụ-2. Nối dữ liệu vào một tên tệp hiện có

Tạo một tệp PHP với tập lệnh sau sẽ nối thêm văn bản với dòng mới vào tệp văn bản hiện có nằm trong thư mục, '/var/www/html/php'. Các tùy chọn FILE_APPEND và LOCK_EX được sử dụng trong đối số thứ ba của hàm file_put_contents[] để nối thêm văn bản vào tệp tạm thời. tập tin txt. Tiếp theo, hàm file_get_contents[] được sử dụng trong tập lệnh để kiểm tra xem văn bản đã được ghi đúng vào tệp hay chưa

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên nếu văn bản được nối đúng vào tệp

Ví dụ-3. Viết/Ghi đè nội dung tệp bằng FILE_USE_INCLUDE_PATH

Bạn phải bật lệnh include_path trong php. ini để sử dụng tùy chọn FILE_USE_INCLUDE_PATH, đối số thứ ba của hàm file_put_contents[]. mở php. ini và xóa dấu chấm phẩy [;] ở đầu dòng sau

include_path = ". /usr/share/php"

Chạy lệnh sau từ thiết bị đầu cuối để khởi động lại máy chủ apache sau khi thay đổi php. tập tin ini

$ sudo dịch vụ apache2 khởi động lại

Tạo tệp PHP với tập lệnh sau sẽ ghi/ghi đè văn bản bằng dòng mới trong tệp văn bản hiện có có tên myfile. txt nằm ở vị trí được xác định trong chỉ thị include_path. Tiếp theo, hàm file_get_contents[] đã được sử dụng trong tập lệnh để kiểm tra văn bản đã được viết đúng trong tệp hay chưa

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên nếu văn bản được viết đúng trong tệp

Ví dụ-4. Ghi vào tệp bằng cách tạo thư mục

Tạo tệp PHP với tập lệnh sau sẽ ghi/ghi đè lên văn bản bằng dòng mới trong tệp văn bản có tên là thử nghiệm. txt nằm bên trong thư mục có tên ‘tạm thời’ bằng cách sử dụng hàm do người dùng xác định có tên WriteIntoFile[]. Hàm này sẽ tạo thư mục nếu thư mục không tồn tại ở vị trí hiện tại trước khi ghi vào tệp. Tiếp theo, hàm file_get_contents[] được sử dụng trong tập lệnh để kiểm tra xem văn bản đã được ghi đúng vào tệp hay chưa

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực thi đoạn mã trên nếu văn bản được viết đúng trong tệp

Phần kết luận

Các cách khác nhau để ghi nội dung vào tệp bằng cách sử dụng hàm file_put_contents[] đã được trình bày trong các ví dụ của hướng dẫn này để giúp người dùng PHP áp dụng đúng chức năng này trong tập lệnh của họ

Làm cách nào để sử dụng file_put_contents trong PHP?

Định nghĩa và cách sử dụng .
Nếu FILE_USE_INCLUDE_PATH được đặt, hãy kiểm tra đường dẫn bao gồm để biết bản sao của tên tệp
Tạo tập tin nếu nó không tồn tại
Mở tập tin
Khóa tệp nếu LOCK_EX được đặt
Nếu FILE_APPEND được đặt, hãy di chuyển đến cuối tệp. .
Ghi dữ liệu vào tệp
Đóng tệp và giải phóng bất kỳ ổ khóa nào

Làm cách nào để lấy nội dung của tệp trong PHP?

The file_get_contents[] đọc một tệp thành một chuỗi. Hàm này là cách ưa thích để đọc nội dung của tệp thành một chuỗi. Nó sẽ sử dụng các kỹ thuật ánh xạ bộ nhớ, nếu điều này được máy chủ hỗ trợ, để nâng cao hiệu suất.

file_put_contents có tạo tệp không?

Tệp_put_contents[] ghi dữ liệu vào tệp . Hàm này tuân theo các quy tắc này khi truy cập tệp. Nếu FILE_USE_INCLUDE_PATH được đặt, hãy kiểm tra đường dẫn bao gồm để biết bản sao của tên tệp. Tạo tập tin nếu nó không tồn tại.

Việc sử dụng file_put_contents là gì?

Hàm file_put_contents[] trong PHP là một hàm sẵn có được sử dụng để ghi một chuỗi vào một tệp . Hàm file_put_contents[] kiểm tra tệp mà người dùng muốn ghi và nếu tệp không tồn tại, nó sẽ tạo một tệp mới.

Chủ Đề