私はデータベースからSQLファイルをダンプするカスタムartisan
コマンドを作った。Laravel 5.4 - カスタムアーティザンコマンド "アクセスが拒否されました。"
ここにはコマンドの内容が記載されています。
私はこの構文とそれにdb:dump
の名前:
public function handle()
{
$ds = DIRECTORY_SEPARATOR;
$host = env('DB_HOST');
$username = env('DB_USERNAME');
$password = env('DB_PASSWORD');
$database = env('DB_DATABASE');
$ts = time();
$path = database_path() . $ds . 'backups' . $ds . date('Y', $ts) . $ds . date('m', $ts) . $ds . date('d', $ts) . $ds;
$file = date('Y-m-d-His', $ts) . '-dump-' . $database . '.sql';
$command = sprintf('mysqldump -h %s -u %s -p\'%s\' %s > %s', $host, $username, $password, $database, $path . $file);
if (!is_dir($path)) {
mkdir($path, 0755, true);
}
exec($command);
}
ので、必要な情報のすべてが私の.env
ファイル内にある:
protected $signature = 'db:dump';
次のコマンドそのものです。それが助けになるなら、私はそれの中に何が入っているかを提供します:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:3WuXKyS70VX+V/Ic5QjuVcmFbzsqTkJehiQA7q9s9gk=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_salesandinventory
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
すべての準備ができていればうまくいけばうまくいきました。
しかし、いつでも私は、コマンドプロンプトでコマンドを実行します。
php artisan db:dump
それは常に「アクセスが拒否されました。」と言います
私はここで鉛を失ってしまったが、何が問題か分かりません。
編集:私はちょうど$this->info('TEST');
とコマンドを置き換えても動作します。これは、console.logコマンドまたは何らかの並べ替えのようなものです。私が言いたいのは、私の命令には私がそれをやることを制限する何かが間違っているということです。
コマンドを実行する代わりに印刷して、コマンドラインに貼り付けることはできますか?それは動作しますか? – Anders
@アンダー何を意味するのですか?申し訳ありませんが、私は完全にそれで失われています。 exec($ command)の代わりにxD –
do dd($ command)を実行します。印刷された文字列をコピーしてコピーし、コマンドラインでテストします。 – Anders