我遇到的问题是fopen(),fwrite()和fclose()函数。这是我收到的错误:
警告:fopen(/db-backup-salisbury_school-20121128-021138.sql)[function.fopen]:无法打开流:C:\ inetpub \ wwwroot \ omarejaz \ sbyschool \ q5.php上的权限被拒绝177
警告:fwrite()要求参数1为资源,在第178行的C:\ inetpub \ wwwroot \ omarejaz \ sbyschool \ q5.php中给出布尔值
警告:fclose()要求参数1为资源,布尔值在第179行的C:\ inetpub \ wwwroot \ omarejaz \ sbyschool \ q5.php中给出
这部分php的代码可以在下面找到任何帮助将非常感谢!
* Save SQL to file
* @param string $sql
*/
protected function saveFile(&$sql, $outputDir = '.')
{
if (!$sql) return false;
try
{
$handle = fopen($outputDir.'/db-backup-'.$this->dbName.'-'.date("Ymd-His", time()).'.sql','w+');
fwrite($handle, $sql);
fclose($handle);
}
catch (Exception $e)
{
var_dump($e->getMessage());
return false;
}
return true;
}
} ?>
答案 0 :(得分:1)
我相信他正在运行带有IIS的Windows Web服务器 - 根据C:\ Inetput \ wwwroot目录结构判断...所以在Windows中你需要这样接近它
如果您的脚本位于此处
C:\inetpub\wwwroot\omarejaz\sbyschool\q5.php
然后,您需要在输出目录中使用正确的Windows目录结构指定完整目录。请记住,您可能必须逃避\,因为,在PHP \ is和转义字符。
$OutputDir = "C:\\inetpub\\wwwroot\\omarejaz\\sbyschool\\tmp";
然后在Windows中确保您在“tmp”文件夹上设置了适当的权限,以允许IIS写入它。
答案 1 :(得分:0)
您需要将$ outputDir设置为'/ tmp'或PHP脚本可以写入的位置。
如果从命令行运行脚本,则运行脚本的用户需要写入权限。如果从Web浏览器运行,则apache或“nobody”需要写入权限。
使用chmod -R a+w <outputfolder>
为所有用户设置写入权限。
如果您无权访问网络服务器,则可以根据此视频使用filezilla设置文件夹权限:http://www.youtube.com/watch?v=oq0oM2w9lcQ
如果您可以使用file_get_contents()获取文件的内容,只需将其回显到标准输出。如果您不打印任何其他内容,浏览器将提示您下载该文件。