2012-05-07 68 views
1

我正在開發一個使用Symfony2的應用程序。我遇到的問題是,當創建一個文件夾在實體中創建一個函數時,創建的文件夾沒有sudo特權,我想知道如何直接使用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

do not't this work? chmod()

+0

我怎麼寫這個?通過將返回chmod('uploads/documents /'。this this-> getIzenburua(),777);它不能完成。它會提示錯誤。任何想法? – Haritz

0

爲什麼你需要爲sudo的特權?由於您的應用程序是由特定用戶下的服務器運行的,因此它將不會爲提供的文件或文件夾提供服務。

+0

在創建目錄uploads/documents /'.$ this-> getIzenburua()後,我保存了一些xml文件,之後我使用PHP DOM加載它們,問題是這個xml無法加載導致目錄中的權限wont讓。任何想法@elnur? – Haritz

+0

以後如何加載它們 - 通過命令行還是什麼? –

+0

使用位於實體存儲庫中的PHP DOM腳本。任何想法? – Haritz

1

如果常規chmod PHP函數不起作用,則可以使用sudo權限執行chmod shell命令。

這是它看起來像在你的命令類:

$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服務器與創建文件的用戶放在同一組中,並使用「g + w」而不是「a + w」。