PHP exec() 和文件系统权限
PHP exec() and filesystem permissions
所以我是 exec 的新手,最近想通过 php 脚本自动执行 mysql 转储。
我的php文件来自
var/WWW/html/tool/script.php
当我 ls -l
时文件夹显示 root / WWW-data
正在做
exec('mysqldump -user=user --password=pass db > selfDir\dump.sql')
现在我希望脚本能够输出到脚本文件夹内的 dump.sql。
不过这并没有发生。
只有一次我做了 touch dump.sql
和 chmod 777 dump.sql
才真正写入了转储。
我不明白为什么。我怎样才能改变我的 exec()
以确保它可以创建 dump.file 而不是只在它已经存在时写入它?
谢谢
如果您只想自动执行数据库备份,最好使用任何其他系统服务调用 mysqldump,例如 cron。
依赖php exec 会产生太多错误。
- Php限时执行
- 从请求执行,然后请求被杀死 exec 被杀死或需要等待所有 mysql转储时间
- 更难的权限
- 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
其他 link 用于 crontab 备份 mysql:Answer K1773R mysql-dump-cronjob
所以我是 exec 的新手,最近想通过 php 脚本自动执行 mysql 转储。
我的php文件来自
var/WWW/html/tool/script.php
当我 ls -l
root / WWW-data
正在做
exec('mysqldump -user=user --password=pass db > selfDir\dump.sql')
现在我希望脚本能够输出到脚本文件夹内的 dump.sql。 不过这并没有发生。
只有一次我做了 touch dump.sql
和 chmod 777 dump.sql
才真正写入了转储。
我不明白为什么。我怎样才能改变我的 exec()
以确保它可以创建 dump.file 而不是只在它已经存在时写入它?
谢谢
如果您只想自动执行数据库备份,最好使用任何其他系统服务调用 mysqldump,例如 cron。
依赖php exec 会产生太多错误。
- Php限时执行
- 从请求执行,然后请求被杀死 exec 被杀死或需要等待所有 mysql转储时间
- 更难的权限
- 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
其他 link 用于 crontab 备份 mysql:Answer K1773R mysql-dump-cronjob