2016-09-27 143 views
-1

我有一個簡單的PHP將文件保存到特定的文件夾。我已經改變了777的權限,但我得到的錯誤:使用file_put_contents將文件保存到文件夾中PHP

Warning: file_put_contents(/var/www/html/foldername/): failed to open stream: Is a directory on line 22 
Warning: chmod(): Operation not permitted on line 23 

如何解決這些問題?

PHP

$file_name = ''; 
$file_binary = ''; 

$folder = "foldername"; 
$file_name = isset($_POST['file_name']) ? $_POST['file_name'] : ''; 
$file_binary = isset($_POST['file']) ? $_POST['file'] : ''; 
$file_directory = "/var/www/html/foldername/".$file_name; 
file_put_contents($file_directory,str_replace("\\","",$file_binary)); 
chmod($file_directory,0777); 
+2

確定,'「/路徑/文件夾名/".$ file_name'是一個有效的路徑?永遠不要將權限設置爲777,644對於文件和對於文件夾是足夠的。 – Gaurav

+0

@Gaurav,我已經改變了文件路徑。 – User014019

+0

可能重複的[PHP - 無法打開流:沒有這樣的文件或目錄](http://stackoverflow.com/questions/36577020/php-failed-to-open-stream-no-such-file-or- directory ) –

回答

0

當有文件上傳,你應該會得到$ _FILE數據,而不是用$ _ POST。嘗試改變你的代碼。

+0

我已經試過了。但我得到相同的'錯誤' – User014019

0

我認爲在你的代碼中需要完成很少的更正。首先請添加默認的文件名到您的三元運算符,而不是使用file_put_content使用fopen'r+'一起請檢查url更多的選項,creting文件之前需要檢查目錄存在並且是可寫的。希望這會幫助你。

+0

目錄是可寫的,我再次檢查文件夾的權限。 – User014019

+0

通過代碼檢查它可能發生的某個時候,像php用戶是不同的,我們正在檢查從另一個用戶。 –

+0

我已經使用fopen了,但是我仍然在'file_put_contents'中得到同樣的錯誤 – User014019

0

試試這個,

$file_name = ''; 
$file_binary = ''; 

$folder = "foldername"; 
$file_name = isset($_POST['file_name']) ? $_POST['file_name'] : ''; 
$file_binary = isset($_POST['file']) ? $_POST['file'] : ''; 
//to create directory: 

$folderPath = "/var/www/html/foldername"; 

is_dir($folderPath) || @mkdir($folderPath) || die("Can't Create folder"); 

$file_directory = "/var/www/html/foldername/".$file_name; 
file_put_contents($file_directory,str_replace("\\","",$file_binary)); 
chmod($file_directory,0777); 
+0

'file_put_contents'中的同樣錯誤 – User014019

+0

請檢查$ file_name是否爲 –

+0

我試圖回顯'$ file_name',並且我得到一個空白 – User014019

相關問題