php - 无法在实时服务器中将 shell_exec 用于 laravel artisan 命令

标签 php apache laravel laravel-artisan shell-exec

我正在使用 shell_exec 命令在后台运行我的 artisan 命令。但是当我在生产服务器中运行 shell_exec 时。

路由代码如下

Route::get('/test/exec', function () {
    echo shell_exec('php ../artisan migrate:status 2>&1; echo $?');
});

它抛出如下错误。

PHP Fatal error: Cannot redeclare class Illuminate\Support\Traits\Macroable in /var/www/production/bootstrap/cache/compiled.php on line 6109 255

但是当我在本地运行相同的命令时,我得到了输出。

  • Laravel 版本 - 5.1.46
  • PHP 版本 - PHP 5.5.9
  • 操作系统版本 - ubuntu 14.04

这些在两台服务器上都是相同的。哪里出了问题。请有人帮我解决这个问题。

最佳答案

对于此错误尝试运行以下命令:

php artisan clear-compiled
php artisan optimize

这应该重新生成 compiled.php 文件。

至于从代码中执行 artisan 命令,有比使用 shell_exec 更好的方法 - for example using Laravel build in support for programmatically executing commands

关于php - 无法在实时服务器中将 shell_exec 用于 laravel artisan 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46319012/

相关文章:

php - 查询为两个唯一字段中的每一个选择具有特定 ID 的行并计算第三个字段的位置

Laravel:调用未定义的方法Illuminate\Database\Eloquent\Collection::save()

PHP 安全扫描器

php - 如何使用php在MySQL中进行多查询循环

php - 在独立的 php 和 apache 安装中使用 wamp 堆栈的 mysql

apache - Wordpress 页面随机充当 RSS/XML 内容

php - Apache:执行 .php 文件等 Javascript 文件

php - 扩展 Laravel 核心日志记录

php - Laravel 返回 Id 列的字符串

javascript - 网站,无法读取 php 作为代码?