2013-07-21 22 views
6

Ben aşağıda fopen() üzerinden bir dosya oluşturmak için çalışıyorum bir dosya oluşturmak için başarısız:fopen() 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'; 
?> 

Ama beni bu dosyayı oluşturup almaz:

Can't create file

PS:

Ben Linux/Ubuntu üzerinde LAMBA sunucusu kullanıyorum.

O dosyayı oluşturmadan önce komuta altında denedim:

sudo chmod -R 755 ~/public_html/ 

Herhangi bir fikir mutluluk duyacağız.

+1

Eğer '~ /' public_html olduğunu/eminiz Geçerli çalışma dizini? Mutlak bir dosya adı denediniz mi? –

+0

@AlexShesterov Evet, eminim çalışıyorum. Mutlak dosya isminin anlamı nedir? –

+0

Absolute dosya adı '/ path/ve/file.name'. Fakat eğer şu anki çalışma yönü '~/public_html /' olarak ayarlanmışsa, mutlak dosya adı kullanmak yardımcı olmaz. Bu arada bir cevabınız var :) –

cevap

7

PHP, Apache web sunucusu için yapılandırılan kullanıcı olarak yürütülür. Dosya oluşturmak için, bu kullanıcının dosyayı oluşturmak istediğiniz dizine yazma izni olması gerekir.

Sen (bir geliştirme makine için yeterince iyi) Apache için yapılandırılmış olan içerecektir tüm kullanıcılar için dizine yazma izni verebilir:

chmod o+w ~/public_html/directory_where_you_want_to_write 

Bunu yapmanın iki yolu vardır Veya dizinin sahibini Apache kullanıcısına iletebilirsiniz. Bu, düzenli kullanıcı hesabınızla sizin sizin de yukarıdakileri yapmadığınız sürece bu dizinde dosya oluşturamayacak veya silemeyeceğiniz anlamına gelecektir.

sudo chown www-data ~/public_html/directory_where_you_want_to_write 

(Ve dizin, sadece bir örnek olarak kullanıyorum public_html altında olmak zorunda değildir: varsayarsak Apaçi Ubuntu varsayılan olarak yaptığı gibi, sen yapardın, www-data kullanıcı hesabı ile çalışır bu senin dosyaların nerede görünüyor çünkü.)

+2

Kullanıcınızı uygun gruba (www'?) Yazıp gruba yazma izni verebilirsiniz. – glglgl

0

klasör böylece apache kullanıcının sahip olması gerekir:

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

Değişim tüm iznine) oluşturmaya çalışırken hangi klasörün izin (

sudo chmod 777 
+2

Bir 'ur tring' nedir? –