首页 > 解决方案 > PHP exec() 和文件系统权限

问题描述

所以我是 exec 新手,最近想通过 php 脚本自动执行 mysql 转储。

我的 php 文件来自

var/WWW/html/tool/script.php

root / WWW-data当我这样做时,该文件夹会读取ls -l

它在做

exec('mysqldump -user=user --password=pass db > selfDir\dump.sql')

现在我期望的是脚本输出到脚本文件夹内的dump.sql。不过,这并没有发生。

只有一次我这样做touch dump.sql并且chmod 777 dump.sql实际上是在编写转储。

我不明白为什么。我如何更改 myexec()以确保它可以创建 dump.file 而不是仅在它已经存在时才写入它?

谢谢

标签: phpfilepermissionsexec

解决方案


如果您只想自动化数据库备份,最好使用任何其他系统服务(如 cron)调用 mysqldump。

依赖 php exec 会产生太多错误。

  • php限时执行
  • 从请求执行,然后请求被杀死执行被杀死或需要等待所有的mysqldump时间
  • 更难的权限
  • php和服务器中的限制内存

在 cron 中,您的备份将是(来自The Java Guy 的示例):

0 0 * * * mysqldump -u 'username' -p'password' DBNAME > /home/eric/db_backup/liveDB_`date +\%Y\%m\%d_\%H\%M`.sql

使用 mysql 进行 crontab 备份的其他链接:Answer K1773R mysql-dump-cronjob


推荐阅读