2013-07-21 4 views
6

上のファイルを作成するために失敗します。のfopen()、私は以下のように<code>fopen()</code>てファイルを作成しようとしている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'; 
?> 

しかし、そのファイルを作成し、私を取得していません:

Can't create file

PS:

Iは、Linux/UbuntuでLAMPサーバーを使用しています。

私はそのファイルを作成する前に、コマンドの下に試してみた:

sudo chmod -R 755 ~/public_html/ 

任意のアイデアをいただければ幸いです。

+1

に '〜/ public_htmlの/は'であることをあなたは確かです現在の作業ディレクトリですか?あなたは絶対的なファイル名を試しましたか? –

+0

@AlexShesterovはい私は作業ディレクトリについては確信しています。絶対ファイル名はどういう意味ですか? –

+0

絶対パス名は '/ path /と/ file.name'です。しかし、現在の作業ディレクトリが '〜/ public_html /'に設定されている場合、絶対ファイル名を使用することは役に立ちません。あなたはその間に答えを持っています:) –

答えて

7

PHPスクリプトは、Apache Webサーバ用に設定されたユーザとして実行されます。ファイルを作成するには、このユーザーはファイルを作成するディレクトリへの書き込み権限が必要です。これを行うには2つの方法があります。

あなたは(開発マシンには十分)のApache用に設定されているものが含まれますすべてのユーザーのためのディレクトリへの書き込み権限を与えることができます:

chmod o+w ~/public_html/directory_where_you_want_to_write 

またはディレクトリの所有権をApacheユーザーに渡すことができます。これにより、普通のユーザーアカウントでは、上記の操作を行わない限り、このディレクトリ内のファイルを作成または削除することはできません。

sudo chown www-data ~/public_html/directory_where_you_want_to_write 

(およびディレクトリは、私はちょうど一例として、それを使用しています、public_html下である必要はありません:それはUbuntuの上で、デフォルトではありませんように、あなたはどうしたら、Apacheがwww-dataユーザーアカウントで実行されると仮定すると、それはあなたのファイルがどこにあるかのようですので、。)

+2

あなたは適切なグループ( 'www'?)にあなたのユーザを入れて、そのグループに書き込みアクセス権を与えることができます。 – glglgl

0

フォルダはそうapacheのユーザーが所有しなければなりません:

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

変更、作成しようとされているフォルダ()の許可すべて許可

sudo chmod 777 
+2

''ツーリング 'とは何ですか? –

関連する問題