PHP passthru()函数结果?

Kam*_*kar 2 php

如何获得passthru()函数的结果?那是它的回归是真还是假?我正在使用passthru()函数开发数据库备份程序.它运行成功但我想在成功与否时向用户备份显示消息.以下是我的代码 - 它运行并创建了一个backup.sql文件,但显示"备份失败".

<?php
$filename = "backup-" . date("d-m-Y");
$cmd = "mysqldump -u root dudh_society >c:/Backup/$filename.sql";   
passthru( $cmd );
if(passthru($cmd) == true)
{
    echo "Backup Succesfully";
}
else
{
    echo "Backup failed";
}
?>
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 6

  1. 该功能的签名是:

    void passthru ( string $command [, int &$return_var ] )
    
    Run Code Online (Sandbox Code Playgroud)

    这意味着,如果要捕获shell程序的退出状态,请为其指定第二个参数:

    passthru($cmd, $status);
    
    if ($status == 0) {
        // success
    } else {
        // failure
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您要访问echo该页面上的任何其他内容,它将成为输出的一部分.因此,转储的MySQL文件将在其末尾包含"备份成功",这可能根本不是您想要的.您必须重定向到另一个页面并在那里输出消息:

    header("Location: http://example.com/result.php?status=$status");
    
    Run Code Online (Sandbox Code Playgroud)