我正在使用HTML表单将文件上传到服务器并在服务器中创建TXT文件以写入错误日志但此过程在我的locaal系统和我的其他服务器中运行良好,但在此操作必须工作的One Server中运行良好。
错误消息:
Warning: move_uploaded_file(taskfinished/512557562_348011_RAND_488.png): failed to open stream: Permission denied in /var/www/smart_1/JSON/taskimageupload.php on line 70
Warning: move_uploaded_file(): Unable to move '/tmp/phpz3HWEJ' to 'taskfinished/512557562_348011_RAND_488.png' in /var/www/smart_1/JSON/taskimageupload.php on line 70
Warning: fopen(errorlog/07.30.13.txt): failed to open stream: Permission denied in /var/www/smart_1/JSON/errorlog.php on line 30
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/smart_1/JSON/errorlog.php on line 35
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/smart_1/JSON/errorlog.php on line 37
我关闭了安全模式,但问题仍然相同..
如何更改服务器中的用户权限。
我的PHP代码:
$finenamedynamic = $CompanyId."_".$ShibNo."_RAND_".rand(100,600);
//$finenamedynamic = date("Y-m-d-H_i_s")."_RAND_".rand(100,600);
//New file name with EXTENSION
$newfilename=$finenamedynamic.".".$extension;
// Upload file
$uploadedimage = $targetfilename . $newfilename;
//Move file to the new file path
if(!move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploadedimage)){
//Error Log
$message = "Error uploading file - check destination is writeable ". $uploadedimage;
ErrorsAreAwesome('70','taskimageupload.php','Create Directory',$message);
}
function ErrorsAreAwesome($line=null,$filename=null,$function=null,$message=null){
//Create Error file for the day
$myFile = "errorlog/".date("m.d.y").".txt";
$error_time = date("Y-m-d H:i:s");
//Construct Error
$file_write = "[".$error_time."]-->[Line:".$line."]-->[File:".$filename."]-->[Fun:".$function."]-->[Msg:".$message."]";
//if file exist appen in the file else create new file and write
if (file_exists($myFile)) {
$fh = fopen($myFile, 'a');
} else {
$fh = fopen($myFile, 'w');
}
//write in file \r\n support for this OS or \n alone work
fwrite($fh, "\r\n".$file_write."\n");
//close file after writing
fclose($fh);
}
答案 0 :(得分:0)
如果你运行了很多测试用例,你会得到什么错误信息?
if(!is_dir('taskfinished'))
{
die("1: dir taskfinished dosn't exists\n");
}
if(!is_writable('taskfinished'))
{
die("2: dir taskfinished isn't writeable\n");
}
$file_resource = fopen('taskfinished/test.txt', 'w');
if(!$file_resource)
{
die("3: failed to open file\n");
}
if(!fwrite($file_resource, 'test'))
{
fclose($file_resource);
die("4: Failed to write to file\n");
}
fclose($file_resource);
die("All test passed\n");
为1,您需要创建文件夹mkdir taskfinished
对于2,您需要更改文件夹chown apache:apache taskfinished
(CHangeOWNer到用户apache和组apache)或chmod o+w
(CHange MODe for Owner add Write)的所有者或权限
对于3或4我没有任何线索
答案 1 :(得分:0)
我通过以下方式解决了这个问题:
在我的情况下,在php.ini
usr/Apache/bin
文件
并找出以下代码:
; Safe Mode
; http://php.net/safe-mode
safe_mode = On
将上面的代码更改为
; Safe Mode
; http://php.net/safe-mode
safe_mode = Off
然后更改File Permission..
将模式0777更改为以下文件夹:
taskfinished
errorlog
这个问题已经解决了!
希望这能有所帮助!