Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sh:$file:不明确的重定向_Php_Sql_Cron_Database Backups - Fatal编程技术网

Php sh:$file:不明确的重定向

Php sh:$file:不明确的重定向,php,sql,cron,database-backups,Php,Sql,Cron,Database Backups,我正在使用这个代码 #!/usr/bin/php <?php $file = '/home/southel2/public_html/archives/BACKUPS/backup.sql'; $backupFile = $dbname.date("Y-m-d-H-i-s").'.zip'; $command = 'mysqldump user=### --password=#### --databases ###_### > $file'; system($command); ?&

我正在使用这个代码

#!/usr/bin/php
<?php
$file = '/home/southel2/public_html/archives/BACKUPS/backup.sql';
$backupFile = $dbname.date("Y-m-d-H-i-s").'.zip';
$command = 'mysqldump user=### --password=#### --databases ###_### > $file';
system($command);
?>

你知道我做错了什么吗?

当你在php中使用单引号时,变量字符串不会被计算,而且字符串中有变量
$file

尝试使用双引号

$command = "mysqldump user=### --password=#### --databases ###_### > $file";

使用双引号。@D.Davis正如@Flosculus所说,您没有使用双引号,因此,
$file
永远不会更改为实际值,它仍然是
$file
,而是一个文本字符串。导致没有来自cron的电子邮件,没有日志条目,将“修改日期”更改为backup.sql文件的日期和时间,但未写入任何导致文件大小为“0”的run_语句。在MyPHPAdmin中,当我单击backup.sql文件,然后单击查看该文件时,它会显示以下内容:404未找到您要查找的页面可能已被删除、名称已更改或暂时不可用。如果您键入了URL,请检查拼写。您可以尝试单击“上一步”按钮,然后尝试其他链接“这显然是一个打字错误,但实际上它会起作用,因为在shell脚本中;只是一个命令分隔符…导致没有来自cron的电子邮件,没有日志条目,将“修改日期”更改为backup.sql文件的日期和时间,但没有写入任何run_语句,导致文件大小为“0”。在MyPHPAdmin中,当我单击backup.sql文件,然后单击查看该文件时,它会显示以下内容:404未找到您要查找的页面可能已被删除、名称已更改或暂时不可用。如果您键入了URL,请检查拼写,您可以尝试单击“上一步”按钮,然后尝试另一个链接“此命令是否执行”
mysqldump user=###--password=###--databases#######>/home/southel2/public#html/archives/BACKUPS/BACKUPS.sql
在您键入命令行时有效?如果有效,应使用
系统代码
问题到底出在哪里?你能说得更具体些吗?我正在尝试使用脚本备份数据库。我从未使用过shell,也不知道如何访问和使用它。因此,我没有测试你上面引用的代码。我已经验证了用户和密码,可以使用它们毫无问题地登录到phpMyAdmin。出于某种原因,它在ust不会产生我想要的结果。我正在编写一个脚本,将数据库备份到一个sql文件,压缩该sql文件,然后每天通过cron将压缩后的sql通过电子邮件发送给我。现在,我只是尝试获取备份和压缩。然后我将处理电子邮件。到目前为止,我已经尝试了所有这些步骤让它工作:从所有php脚本更改为mysqldump以访问数据库,更改目录路径和目标文件的路径和权限,从使用“单”更改为“双”,从--所有数据库更改为--数据库,然后确定要备份的数据库。我尝试了cpanel用户-u&-p和根帐户-u&-p。我尝试了调用-u&-p的所有变体,这些变体是--user=--password=。这些行动似乎都不起作用,每个行动产生不同的结果,有些行动产生相同的结果,但它们都没有达到预期的效果。
$command = "mysqldump user=### --password=#### --databases ###_### > $file";