2012-05-07 10 views
1

私はSymfony2を使ってアプリケーションを開発しています。私が持っている問題は、フォルダを作成するときに、作成されたフォルダにsudo権限がない場合、そのフォルダを直接作成することができるかどうかを知りたいということです。これは私のコードです:Symfony2とsudoの特権

protected function getUploadDirMark() 
    { 
     // get rid of the __DIR__ so it doesn't screw when displaying uploaded doc/image in the view. 
     return 'uploads/documents/'.$this->getIzenburua(); 
    } 

'uploads/documents/'.$this->getIzenburua();フォルダには、私はsudo権限でそれを作成することができますどのように、何のsudo権限を持っていません。ありがとう。

答えて

0

この作品はありませんか? chmod()

+0

どうすればいいですか? return chmod( 'uploads/documents /'.$ this-> getIzenburua()、777)を置くことによって、それはできません。エラーが表示されます。何か案が? – Haritz

0

なぜsudo権限が必要ですか?アプリケーションは特定のユーザーの下にあるサーバーによって実行されるため、作成したファイルやフォルダーには問題ありません。

+0

ディレクトリを作成した後/ upload/documents /'.$ this-> getIzenburua()私はそこにいくつかのXMLファイルを保存し、その後PHP DOMを使用してロードします。このXMLはロードできません。 let。どんなアイデア@elnur? – Haritz

+0

後でどうやってロードするのですか?コマンドライン経由で何をロードするのですか? –

+0

エンティティリポジトリにあるPHP DOMスクリプトを使用します。何か案が? – Haritz

1

通常のchmod PHP機能が動作しない場合は、chmodシェルコマンドをsudo権限で実行できます。

これは、あなたのCommandクラスにどのようになるかである:

$uploadDirmark = $this->getUploadDirMark(); 
$dialog = $this->getHelperSet()->get('dialog'); 
$passwd = $dialog->ask($output, 'Please enter sudo password'); 
exec("echo $passwd | sudo -S chmod -R a+w $uploadDirmark"); 

これは、すべてのユーザーに、ディレクトリとそのすべての内容が書き込み可能(および削除可能)になるだろう。コマンドを適切に修正します(詳細については、コマンドラインのman chmodを参照してください)。このように開くと危険なことがあります。ファイルを作成するユーザーと同じグループにWebサーバーを置き、 "a + w"ではなく "g + w"を使用してみてください。

関連する問題