PHP exec()和文件系统权限

时间:2018-09-19 06:32:16

标签: php file permissions exec

因此,我是exec的新手,最近想通过php脚本实现mysql Dumping自动化。

我的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才真正被写入了转储。

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

依靠php exec可能会产生太多错误。

  • Php限时执行
  • 从请求执行,然后请求被杀死,exec被杀死,或者需要等待所有的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