使用file_put_contents将文件保存到文件夹中PHP

问题描述:

我有一个简单的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://*.com/questions/36577020/php-failed-to-open-stream-no-such-file-or- directory ) –

当有文件上传,你应该会得到$ _FILE数据,而不是用$ _ POST。尝试改变你的代码。

+0

我已经试过了。但我得到相同的'错误' – User014019

我认为在你的代码中需要完成很少的更正。首先请添加默认的文件名到您的三元运算符,而不是使用file_put_content使用fopen'r+'一起请检查url更多的选项,creting文件之前需要检查目录存在并且是可写的。希望这会帮助你。

+0

目录是可写的,我再次检查文件夹的权限。 – User014019

+0

通过代码检查它可能发生的某个时候,像php用户是不同的,我们正在检查从另一个用户。 –

+0

我已经使用fopen了,但是我仍然在'file_put_contents'中得到同样的错误 – User014019

试试这个,

$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