如何手动使用 composer, artisan ...(Laravel) php 命令

Posted

技术标签:

【中文标题】如何手动使用 composer, artisan ...(Laravel) php 命令【英文标题】:How to use composer, artisan ...(Laravel) php commands manually 【发布时间】:2015-12-31 06:40:05 【问题描述】:

我有一个问题我没有 ssh 访问服务器,所以我不能使用 php artisan、composer 和其他命令。 我可以质疑他们除了修改文件或只是将 php src 文件复制到特定目录之外什么都不做。 为了更好地理解该过程并且由于无法通过 ssh 访问服务器,我正在寻找教程、手册或文章如何手动执行此命令。 例如我需要执行

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

在这种情况下我应该怎么做,找到一些文档描述我应该手动做什么以获得相同的结果会很高兴。

【问题讨论】:

【参考方案1】:

您可以从应用程序执行命令行。你可以这样做:

Route::get('execute/my/command', function()
    exec("php path/to/your/project/artisan your-command",$resultLines);
    Foreach($resultLines as $resultLine)
         echo $resultLine;
     
);

第一个 exec 属性是您的命令,第二个是用于保存结果的变量。 希望对你有帮助

【讨论】:

这是假设在服务器上启用了“exec”。鉴于 OP 没有 SSH 访问权限,这似乎不太可能。【参考方案2】:

Laravel 为工匠命令提供了一个方便的外观。

只需在您需要的地方使用Artisan::call('your-command')

示例:

Route::get('artisan-command/command', function($command) 
    Artisan::call($command);
);

您的网址如下所示:http://yourhost.com/artisan-command/db:seed

更适合您的用例:

Route::get('vendor-publish/provider', function($provider) 
    Artisan::call('vendor:publish', ['provider' => $provider]);
);

网址:http://yourhost.com/vendor-publish/Tymon\JWTAuth\Providers\JWTAuthServiceProvider

参考:Artisan Console in the Laravel Docs

【讨论】:

以及如何运行php composer.phar require laravel/ui ?是否有任何 Composer::call 或仍在使用 Artisan::call ?

以上是关于如何手动使用 composer, artisan ...(Laravel) php 命令的主要内容,如果未能解决你的问题,请参考以下文章

无法重新声明类 Composer 导致无法 Php artisan 服务

Laravel - 在部署自定义 Artisan 命令时未部署 composer.json 文件

“php artisan dump-autoload”和“composer dump-autoload”之间有什么区别?

Laravel - 在我运行 composer update CLI artisan 之后出现问题

我无法在我的 docker compose 中进行 mysql php artisan 迁移。错误 SQLSTATE[HY000] [2002]

Laravel 4 Artisan 根本不工作