2011-12-28 9 views
9

私はfopenを使って新しいファイルを作成しています。 file_exists()機能:ファイルを使用して作成されている場合fopenはファイルを作成しますが、権限を変更する方法は?

$filename = 'user_data/10.xml'; 
$openhandle = fopen($filename, 'w+'); 

それから私は確認してください。

問題は次のとおりです。ファイルは所有者(おそらくフォルダ名)で作成されていますが、私ではありません。また、ファイルのアクセス許可はreadable by the ownerです。 私は所有者ではないため、ファイルを読み取ることができず、アクセス権を変更することもできません。

しかし、もし使用して、それを変更しようとする試み:

chown($filename, 'myusername'); 
chmod($filename, 777); 

を私はsudoを使用して、ターミナルを使用して、ファイルの所有者とパーミッションを変更してみました。それは適切に働いた。 したがって、上記の関数をshell_exec()と一緒に使ってみましたので、ルートで実行されます。

しかし運がなかった。

私はファイル許可番号について多くの経験はありませんが、chownコマンドも機能していません。

ファイルの所有者とアクセス権を変更して、私が所有者であり、他のPHPスクリプトで読み書きできるようにするにはどうすればよいですか?

+0

ファイルがアップロードされると(chmodの前に)、ファイルのアクセス許可は何ですか?user_dataフォルダのアクセス許可は何ですか?割り当てられた所有者は誰ですか? –

+0

私は新しい空のファイルを作成し、fwrite()を使ってそれに書き込みます。ファイルのパーミッションは次のとおりです。 所有者とグループ:WWW-データ 所有者: グループをお読みください。 その他を実行します。user_dataのフォルダに を実行し、私が書く、所有者だと3つのすべての人が読むように設定されています、Execute ... –

+0

TimWickstrongによると、chmodコマンドに先行する0を追加する必要がありますが、chmodへのアクセス権がない可能性もあります。 $ chmoded = chmod($ filename、0777);を試してください。 if(!$ chmoded){echo "ファイルパーミッションを変更できませんでした";} ...また、ファイルパーミッションが777の場合、chownする必要はありません。 –

答えて

17

あなたは次の行のみ使用します。chmodすることができるはずです。それは

をchmod'edされています前に、また777

の前に0が所有権を変更しないでください

chmod($filename, 0777); 

注意を

+0

詳細はこちらhttp://php.net/manual/en/function.chmod.php –

+0

これは完璧に機能しました... ありがとうございました...:D –

+1

問題ありません!お役に立てて嬉しいです! –

関連する問題