小编cod*_*ken的帖子

每个数据库使用一个Laravel迁移表

我在一个使用多个数据库的项目中工作.看起来Laravel只使用设置为默认值的数据库中的migrations-table.我希望每个数据库有一个迁移表,用于记录已对该特定数据库执行的迁移.这可能吗?

我在配置中定义了数据库,如下所示:

'connections' => [
    'db1' => array(
        'driver'    => 'mysql',
        'host'      => 'db1.host',
        'database'  => 'db1',
        'username'  => 'username',
        'password'  => 'password',
    ),
    'db2' => [
        'driver'    => 'mysql',
        'host'      => 'db2.host',
        'database'  => 'db2',
        'username'  => 'username',
        'password'  => 'password',
    ]
],
Run Code Online (Sandbox Code Playgroud)

我还将第一个数据库(db1)设为默认数据库

'default' => 'db1'
Run Code Online (Sandbox Code Playgroud)

我在两个数据库上安装迁移表

artisan migrate:install --database=db1
artisan migrate:install --database=db2
Run Code Online (Sandbox Code Playgroud)

之后,我继续创建几个数据库特定的迁移

在db1数据库中创建表test1:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateTest1Table extends Migration
{
    public function up()
    {
        Schema::connection('db1')->create('test1', function(Blueprint $table)
        {
            $table->increments('id')->unsigned();
        });
    }

    public function down() …
Run Code Online (Sandbox Code Playgroud)

php database-migration laravel-4

10
推荐指数
1
解决办法
4925
查看次数

使用Symfony Process使用PHP控制交互式进程

我试图通过使用ssh-add向其添加新密钥来控制系统ssh-agent.为此我正在使用Symfony Process组件.

当我从一个网站运行这个代码时它工作得很好但是当我在shell/console中运行相同的代码时,ssh-add进程挂起 Enter passphrase for <path to key>:

代码的简化版本看起来像这样

use Symfony\Component\Process\Process;

$keyPath = '<path to key>';
$keyPassword = '<password for unlocking the key>';
$socketPath = '<path to ssh-agent socket>';

$sshAdd = new Process(
    "ssh-add {$keyPath}",
    null,
    [
        'SSH_AUTH_SOCK' => $socketPath
    ],
    $keyPassword
);
$sshAdd->run();
Run Code Online (Sandbox Code Playgroud)

正如您在上面的代码中看到的那样,我打电话给ssh-add,SSH_AUTH_SOCK在环境中设置,以便ssh-add与代理交谈,然后在输入中发送密码.正如我之前所说,当我在Web上下文中运行它时,它可以工作但它挂在shell /控制台上下文中.

strace在控制台中运行时做了一个,相关部分看起来像这样

open("<path to key>", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
write(4, "<key password>", <length of password>)      = 20
close(4)                                              = 0 …
Run Code Online (Sandbox Code Playgroud)

php shell process symfony symfony-process

6
推荐指数
1
解决办法
3668
查看次数

Git 日志显示错误的提交日期

出于某种原因,我最近所有的 git 提交都提交了错误的日期。

我昨天提交了两次,今天提交了一次,它们都显示为16 天前提交。更具体地说,2014 年 10 月 31 日星期五 15:32:21 +0100

date在我的电脑上运行产生Sun 16 Nov 2014 12:55:08 CET,所以我的电脑时间是正确的。

将存储库推送到 GitHub 时,问题仍然存在。

更新 #1:

有问题的存储库可以在 Github上找到

文件列表显示提交制成,当这样写,26分钟前。哪个是正确的。

提交日志已在正确的日期提交,但显示着15天以前

更新#2:

操作系统:

Darwin Juno.local 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64.
Run Code Online (Sandbox Code Playgroud)

GIT 版本:

git version 1.8.5.2 (Apple Git-48)
Run Code Online (Sandbox Code Playgroud)

GIT 环境变量:

GIT_DIR=.git
GIT_AUTHOR_DATE=@1414765941 +0100
GIT_INDEX_FILE=.git/index
GIT_AUTHOR_NAME=codeaken
GIT_PREFIX=
GIT_AUTHOR_EMAIL=<removed>
Run Code Online (Sandbox Code Playgroud)

git

5
推荐指数
1
解决办法
3660
查看次数