2013-07-21 22 views
6

Tôi đang cố gắng để tạo ra một tập tin thông qua fopen() như sau:fopen() thất bại trong việc tạo ra một tập tin trên Linux

<?php 
    $handle = fopen('name.txt', 'w') or die('Can\'t create file'); 
    fwrite($handle, 'Hamed'."\n"); 
    fwrite($handle, 'Kamrava'."\n"); 
    echo 'File was created successfully'; 
?> 

Nhưng không tạo ra tập tin đó và làm cho tôi:

Can't create file

PS:

Tôi đang sử dụng máy chủ LAMP trên Linux/Ubuntu.

Tôi đã thử dưới lệnh trước khi tạo tập tin đó:

sudo chmod -R 755 ~/public_html/ 

Bất kỳ ý tưởng sẽ được đánh giá.

+1

bạn có chắc rằng '~/public_html /' là thư mục làm việc hiện tại? Bạn đã thử một tên tập tin tuyệt đối chưa? –

+0

@AlexShesterov Có, tôi chắc chắn về thư mục làm việc. Ý nghĩa của bạn về tên tệp tuyệt đối là gì? –

+0

Tên tệp tuyệt đối là '/ path/và/file.name'. Nhưng nếu thư mục làm việc hiện tại được đặt thành '~/public_html /' thì sử dụng tên tệp tuyệt đối sẽ không hữu ích. Bạn có câu trả lời trong khi đó :) –

Trả lời

7

Các kịch bản PHP được thực hiện như là người dùng cấu hình cho máy chủ web Apache. Để tạo tệp, người dùng này phải có quyền ghi vào thư mục mà bạn muốn tạo tệp. Có hai cách để làm điều này:

Bạn có thể cung cấp cho các quyền ghi vào thư mục cho tất cả người dùng, trong đó sẽ bao gồm bất cứ điều gì được cấu hình cho Apache (đủ tốt cho một máy phát triển):

chmod o+w ~/public_html/directory_where_you_want_to_write 

Hoặc bạn có thể chuyển quyền sở hữu của thư mục cho người dùng Apache. Điều này có nghĩa là bạn với tài khoản người dùng thông thường của bạn sẽ không thể tạo hoặc xóa tệp trong thư mục này, trừ khi bạn cũng làm như trên. Giả sử Apache chạy với tài khoản www-data người dùng, như nó theo mặc định trên Ubuntu, bạn sẽ làm gì:

sudo chown www-data ~/public_html/directory_where_you_want_to_write 

(Và các thư mục không phải là dưới public_html, tôi chỉ sử dụng nó như một ví dụ vì đó có vẻ là nơi các tập tin của bạn.)

+2

Bạn có thể đưa người dùng của mình vào nhóm thích hợp ('www'?) Và sau đó cấp quyền ghi vào nhóm. – glglgl

0

thư mục đã được sở hữu bởi người sử dụng apache vậy:

sudo chown -R www-data:www-data ~/public_html/ 
0

Thay đổi sự cho phép của thư mục (trong đó bạn đang cố gắng để tạo ra) cho tất cả các phép

sudo chmod 777 
+2

'Tìm kiếm' là gì? –

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