如何告诉Deployer使用不同的PHP版本ssh&#39?ed到我的共享主机?

时间:2018-03-01 12:15:15

标签: php laravel laravel-5 php-7 php-deployer

我尝试使用Deployer将Laravel应用程序部署到我的本地~/Code/project_foo的共享主机(使用laravel配方)。

关键是,当我通过ssh连接到我的共享托管服务器时,默认php -v版本为5.6.33。我确认我可以通过调用php70 -v或甚至整个路径/usr/local/bin/php70 whatever来改变PHP版本。

关键是我不知道如何告诉部署者使用php70来调用命令,否则composer install会失败。

enter image description here

因此,在Laravel项目的根目录中的终端I中,我只是致电:

dep deploy

我的deploy.php非常简单,但这只是一个概念证明。我试图找出所有东西,然后我会让它看起来更好。

enter image description here

我检查了source code of the laravel recipe,我看到有:

{{bin/php}}

但我不知道如何覆盖该值以匹配我的主机告诉我使用的内容:

/usr/local/bin/php70

请给我任何提示如何在连接到远程主机/服务器后强制脚本使用不同的PHP版本。

这是完整的脚本:

<?php
namespace Deployer;

require 'recipe/laravel.php';


//env('bin/php', '/usr/local/bin/php70'); // <- I thought that this will work but it doesn't change anything


// Project name
set('application', 'my_project');

// Project repository
set('repository', 'git@github.com:xxx/xxx.git');

// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true); 

// Shared files/dirs between deploys 
add('shared_files', []);
add('shared_dirs', []);

// Writable dirs by web server 
add('writable_dirs', []);


// Hosts

host('xxx')
    ->user('xxx')
    ->set('deploy_path', '/home/slickpl/projects/xxx');

// Tasks

task('build', function () {
    run('cd {{release_path}} && build');
});

// [Optional] if deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');

// Migrate database before symlink new release.

before('deploy:symlink', 'artisan:migrate');

3 个答案:

答案 0 :(得分:5)

对于搜索更改 Composer 的 PHP 版本的任何人:

set('bin/composer', function () {
    return '/usr/bin/php7.4 /usr/local/bin/composer';
});

答案 1 :(得分:4)

好的,我找到了解决方案。

我添加(在require之后):

set('bin/php', function () {
    return '/usr/local/bin/php70';
});

答案 2 :(得分:0)

有函数locateBinaryPath() 所以结果是:

set('bin/php', function () {
    return locateBinaryPath('php7.4');
});