【发布时间】:2012-08-08 17:42:30
【问题描述】:
我的 php 文件中有以下函数,我的脚本正在 CPanel 上。我确信脚本已经执行,因为最后的打印输出已经出现,但是我的 csv 文件没有。我已将文件夹 Log_report 的权限更改为 755,但仍然无法创建文件,我该如何更改?我确信创建 csv 的 mysql 脚本是正确的,因为我在我的 XAMPP 本地机器中使用了相同的脚本,并且之前在我的机器中成功创建了一个文件。
function export($DB){
$dbConnection = mysql_connect($DB['server'], $DB['loginName'], $DB['password']);
if(!$dbConnection){
die('Error! ' . mysql_error());
}
mysql_select_db($DB['database'], $dbConnection);
$timezone = "Asia/Hong_Kong";
if(function_exists('date_default_timezone_set'))
date_default_timezone_set($timezone);
$Time = date('Y_m_d_H_i');
$fileName = "/home/me/public_html/Log_Report/Report_".$Time.".csv";
$result = mysql_query("SELECT TechName, ClientName, SiteName, LogTime, Type
INTO OUTFILE '".$fileName."'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED by '\"'
LINES TERMINATED BY '\n'
FROM tech AS T, client AS C, site AS S, log AS L
WHERE T.TechID=L.TechID AND C.ClientID=L.ClientID AND S.SiteID=L.SiteID
ORDER BY L.LogTime DESC");
print "abcde";
}
【问题讨论】:
-
我的作品 cpanel 服务器遇到了类似的问题。我想你会发现你可以让 php 在那个文件夹中创建文件就好了,它对 mysql 的写权限可能有问题。很确定它受到限制,因为 sql 注入 + mysql 上的写入权限 = 在您的站点根目录上方创建恶意服务器端脚本....与您的主机交谈
-
那么如果我想创建文件,我必须更改mysql的权限?请问这个配置可以自己修改吗?
-
你需要找出mysql服务的运行方式。如果它的根(我不认为它应该是)那么文件写访问不应该是一个问题,否则它可能确实需要许可。如果您具有 root 访问权限,您可能可以自己更改它,但您最好先与您的主机交谈,因为它可能有充分的理由受到限制...