7

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

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

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

在此处输入图像描述

因此,在终端中,我位于 Laravel 项目的根目录中,我只需调用:

dep deploy

deploy.php的很混乱而且很简单,但这只是概念的证明。我试图弄清楚一切,然后我会让它看起来更好。

在此处输入图像描述

我查看了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');
4

3 回答 3

16

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

我添加(之后require):

set('bin/php', function () {
    return '/usr/local/bin/php70';
});
于 2018-03-01T12:57:36.863 回答
9

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

set('bin/composer', function () {
    return '/usr/bin/php7.4 /usr/local/bin/composer';
});
于 2021-01-22T17:45:15.963 回答
1

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

set('bin/php', function () {
    return locateBinaryPath('php7.4');
});
于 2021-06-30T11:17:03.437 回答