【问题标题】:Laravel mysqldump create empty file, but same command work when execute via xampp shellLaravel mysqldump 创建空文件,但通过 xampp shell 执行时相同的命令工作
【发布时间】:2017-06-25 08:01:53
【问题描述】:

在 Xampp 321 Win7 Mysql5.6 PHP 5.6.3 上运行 Laravel 5.2 我无法创建 BD 转储文件 .sql

        $filename = "backup-".Carbon\Carbon::now()->format('Y-m-d_H-i-s').".sql  2>&1";

        try{
          $command = "mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . "  > " . storage_path() . "/" . $filename;
          $returnVar = NULL;
          $output  = NULL;
          //exec command allows you to run terminal commands from php 
          exec($command, $output, $returnVar);
          //dd($command);  
          return 1;    
         }catch(Exception $e){
           return $e->errorInfo; //some error
         }

加载脚本时会生成一个空文件!但是通过执行 dd ($ command) 并复制粘贴此文本,此命令在 Xampp shell 中运行良好。请问有什么想法吗?

【问题讨论】:

  • 你在使用 artisan 命令吗?
  • 不,直接cmd(来自xampp面板的shell)
  • 你打算如何从 Laravel 运行它?如果您希望它从 Laravel 运行,请按照此处的说明进行操作:laravel.com/docs/5.2/artisan
  • 我想用纯php从Laravel控制器执行任务,直接调用mysql引擎的命令,我想知道是否可能以及为什么写一个.sql文件为空0KB
  • 是的,您可以从控制器调用工匠命令。 laravel.com/docs/5.2/artisan#calling-commands-via-code

标签: php mysql laravel xampp


【解决方案1】:

使用此代码解决:设置 mysqldump 的绝对路径并在 url var 中添加双反斜杠

    $filename = "backup-".date("d-m-Y-H-i-s").".sql";
    $mysqlPath = "D:\\xampp/mysql/bin/mysqldump";

    try{
        $command = "$mysqlPath --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . "  > " . storage_path() . "/" . $filename."  2>&1";
        $returnVar = NULL;
        $output  = NULL;
        exec($command, $output, $returnVar);
        return 1;//ok

     }catch(Exception $e){
        return "0 ".$e->errorInfo; //some error
     }

【讨论】:

  • 通过添加 SQL 转储绝对路径解决的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2020-11-06
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多