2014-07-01 19 views
8

Tôi đang chạy PHP 5.5.9 trên Ubuntu 14.04. Tôi gặp sự cố khi ghi vào một tệp. Tôi cảm thấy như thế này đã được một vấn đề quyền truy cập tập tin bởi vì tôi khá chắc chắn mã là chính xác. Người dùng mà tôi đã đăng nhập như có quyền ghi vào các thư mục mà tôi đang cố gắng viết vào, nhưng tôi không chắc liệu localhost có thực hiện hay không. Tôi không chắc chắn tên của người dùng localhost là gì để sử dụng chmod. Tôi đã thử sử dụng chmod 777 -R /var/www/html và tập lệnh vẫn không thể ghi vào thư mục đích của mình, có đường dẫn /var/www/html/Projects/MD_ScrapingTool/files. Đây là mã của tôi:Gặp sự cố khi ghi vào một tệp bằng PHP trên Ubuntu

$file = 'filetest.txt'; 
if($handle = fopen($file, 'w')) { 
    $content = "123\n456"; 
    fwrite($handle, $content); 
    fclose($handle); 
} else { 
    echo "Could not open file for writing."; 
} 
+4

Với 'error_reporting (E_ALL)' ở đầu tệp PHP của bạn, lỗi nào đang được xuất? – ljacqu

+1

Điều gì sẽ xảy ra khi bạn chạy mã này? Bạn có thấy câu trả lời của bạn không? Nếu vậy, điều đó có nghĩa là bạn không thể mở một tập tin xử lý, đó là một dấu hiệu có thể thấy rằng đường dẫn bạn đang chỉ định cho tập tin là không chính xác. Bạn có thể thử sử dụng đường dẫn tuyệt đối cho tệp. Bạn có thể sử dụng is_file và is_writable để giúp bạn gỡ lỗi. Ngoài ra, bạn có thể xem xét việc sử dụng file_put_contents thay vì làm việc với fopen, fwrite và fclose. – oliakaoil

+0

Nếu bạn tự khắc phục sự cố, bạn nên đăng câu hỏi đó làm câu trả lời. Vui lòng không chỉnh sửa * câu hỏi * để thêm câu trả lời. – Flexo

Trả lời

16

Sau một số nghiên cứu khác, tôi đã tìm ra. Đây là giải pháp cho bất kỳ ai có cùng sự cố:

Vì localhost thuộc nhóm www-data, tôi vừa thêm người dùng của mình vào nhóm đó.

sudo usermod -a -G www-data my_username 

Sau đó, tôi đã thêm thư mục vào nhóm.

sudo chgrp -R www-data /var/www 

Sau đó, tôi đã cấp quyền ghi vào nhóm dữ liệu www.

sudo chmod -R g+w /var/www 

Điều này làm việc cho tôi mà không có bất kỳ vấn đề nào khác. Cảm ơn!

+0

Chỉ là những gì tôi đang tìm kiếm! Cảm ơn. –

+1

Bạn là một anh hùng <3. Thêm một. – Gogol

0

Cố gắng đưa ra các đường dẫn tuyệt đối và tên tập tin với open:

$file = '/html/Projects/MD_ScrapingTool/files/filetest.txt'; 

Nếu tập tin không tồn tại, fopen nên tạo file với chế độ 'w'.

0

Bạn có thể xác minh rằng bạn có quyền trên thư mục '/ html/Projects/MD_ScrapingTool/files /' và thử với đường dẫn tuyệt đối.

Các vấn đề liên quan