当前位置: 首页 > 知识库问答 >
问题:

从Php备份数据库时遇到问题

宰父冠玉
2023-03-14

我遇到的问题是fopen()、fwrite()和fclose()函数。这是我收到的错误:

警告:fopen(/db-backup-salisbury_school-20121128-021138.sql)[function.fopen]:无法打开流:在C:\inetpub\wwwroot\omarejaz\sbyschool\q5中的权限被拒绝。php在线177

警告:fwrite()要求参数1为资源,布尔值在C:\inetpub\wwwroot\omarejaz\sbyschool\q5中给出。php在线178

警告:fclose()要求参数1为资源,布尔值在C:\inetpub\wwwroot\omarejaz\sbyschool\q5中给出。php在线179

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;
}

}?

共有2个答案

谢洛城
2023-03-14

您需要将$outputDir设置为“/tmp”或PHP脚本可以写入的内容。

如果从命令行运行脚本,则运行脚本的用户需要写入权限。如果从web浏览器运行,apache或“无人”需要写入权限。

使用chmod-R a w

如果您没有访问web服务器的权限,可以根据以下视频使用filezilla设置文件夹权限:http://www.youtube.com/watch?v=oq0oM2w9lcQ

如果您可以使用file_get_contents()获取文件的内容,并将其与标准输出相呼应。如果您没有打印任何其他内容,您的浏览器将提示您下载该文件。

李兴庆
2023-03-14

我相信他正在用IIS运行Windows Web服务器-从C:\Inetput\wwwroot目录结构判断。。。因此,在Windows中,您需要以这种方式进行操作

如果你的剧本在这里

C:\inetpub\wwwroot\omarejaz\sbyschool\q5.php

然后,您需要在输出目录中使用适当的Windows目录结构指定完整目录。请记住,您可能必须转义,因为在PHP中,转义字符。

$OutputDir = "C:\\inetpub\\wwwroot\\omarejaz\\sbyschool\\tmp";

然后在Windows中,确保您在“tmp”文件夹上设置了适当的权限,以允许IIS写入它。

 类似资料:
  • 问题内容: 我在MySql中有一个很大的数据库,我需要每天左右对其进行备份。 我需要能够从任何计算机上进行备份,因此我考虑制作一个php脚本来做到这一点,并将此php脚本置于联机状态(具有密码保护和授权等功能,因此只有我可以访问它)。 但是,我不知道如何正确完成? 我应该使用哪些命令,并且可以更改备份的设置(例如)? 我将不胜感激… 另外,如果这是一个错误的方法(不安全,或者使用错误的sql文件提

  • 当我想从inflxdb备份一些数据时,会发生这样的情况: [root@bj-collection-01 opt]#inflxd backup-database clireport-host localhost:8086/opt/clireportbak/ 2018/04/16 10:17:12将metastore备份到/opt/clireportbak/meta.00 2018/04/16 10:

  • 我有一个Firebase实时数据库,在那里我存储谷歌地图标记数据。看起来是这样的:Firebase数据库 我的应用程序可以选择将您自己的标记添加到数据库中,我的问题是我的应用程序只从Studio 1和T1读取信息,而不是从. ush()添加的随机键中读取信息。当我通过应用程序添加标记时。关于如何让它读取随机键下的标记信息有什么想法吗?我的代码如下所示: 而且 } 最后在哪里向数据库添加新标记: 到

  • 主要内容:备份一个数据库,备份多个数据库,备份所有数据库数据库的主要作用就是对数据进行保存和维护,所以备份数据是数据库管理中最常用的操作。为了防止数据库意外崩溃或硬件损伤而导致的数据丢失,数据库系统提供了备份和恢复策略。 保证数据安全的最重要的一个措施就是定期的对数据库进行备份。这样即使发生了意外,也会把损失降到最低。 数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本。当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库

  • 和RDBMS一样,OrientDB也支持备份和恢复操作。 在执行备份操作时,它将使用ZIP算法将当前数据库的所有文件转换为压缩的zip格式。 通过启用自动备份服务器插件,可以自动利用此功能(备份)。 但是,根据必须知道何时使用备份以及何时使用导出的过程,对数据库进行备份或导出数据库是相同的。 在进行备份时,它会创建一个数据库的一致副本,所有进一步的写入操作都会被锁定并等待完成备份过程。 在这个操作

  • 我不明白如何解决这个问题。我该怎么办。php和连接器。连接中的php文件。php第664行: 拒绝用户“root”@“localhost”的SQLSTATE[HY000][1045]访问(使用密码:YES)(SQL:select*from information\u schema.tables,其中table\u schema=STDHUB和table\u name=migrations) 插入连