【问题标题】:Why doesn't artisan work on composer update and return no error messages?为什么工匠不进行作曲家更新并且不返回错误消息?
【发布时间】:2014-01-05 14:19:45
【问题描述】:

我在使用 laravel 时遇到了一百个问题。我最近将一个 laravel 3 网站升级到 laravel 4,并将整个项目保存到 Github 上的一个存储库中。由于我经常不小心从错误的文件夹中编辑文件,因此我只是在我的工作目录中创建了本地 git 存储库,所以我只有一个目录要处理。

在我尝试安装一些我以前能够安装的 laravel 软件包之前,一切都运行良好。每当我运行 composer update 时,我所有的工匠脚本都会返回一个错误。即使在我确定我使用的是开发 PHP.ini 文件之后,错误消息本身(可能是 PHP 错误)也不会显示。

fatal: No names found, cannot describe anything.
* master [KEY REMOVED] Remove mPDF Library
Script php artisan clear-compiled handling the pre-update-cmd event returned with an error

Status for device CON:
----------------------
    Lines:          300
    Columns:        80
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      437

Status for device CON:
----------------------
    Lines:          300
    Columns:        80
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      437

  [RuntimeException]  
  Error Output:       

update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--with-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [packages1] ... [packagesN]

这是我的composer.json(我读到的一个建议是将“php artisan clear-compiled”放在“pre-update-cmd”中):

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.1.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan optimize"
        ],
        "pre-update-cmd": [
            "php artisan clear-compiled"
        ],
        "post-update-cmd": [
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev",
    "require": {
        "laravelbook/ardent"   : "dev-master",
        "loic-sharma/profiler" : "dev-master",
        "prologue/alerts"      : "dev-master",
        "mpdf/mpdf"            : "dev-master"
    }
}

我注意到的另一件奇怪的事情是:

fatal: No names found, cannot describe anything.
* master [KEY REMOVED] Remove mPDF Library

这是引用我的 git repo 中的最新提交。为什么要提到这个?我认为这可能是问题的一部分,直到我意识到即使是全新安装也会出现问题。

是的,我已尝试删除脚本或运行 --no-scripts。不过,我认为这是我的问题开始的地方,因为即使我运行 --no-scripts 我也会收到以下错误:

Fatal error: Class 'Patchwork\Utf8\Bootup' not found in [ROOT PATH REMOVED]/bootstrap/autoload.php on line 46

我了解到,当我升级到 4.1 时,某些文件可能已经丢失。所以我填写了所有丢失的文件,我得到了一个空白页。

根据我正在阅读的内容,全新安装的 laravel 应该能够运行 artisan,或者至少在运行 composer install 之后。我什至无法在全新安装上使用它。所以我将我的 xampp 安装更新到了最新版本。

我还读到有一种方法可以检查是否安装了 mcrypt:php -i | grep "mcrypt support" 它表示如果没有返回任何内容,则未安装 mcrypt,但它肯定返回了一些东西。

mcrypt

mcrypt support => enabled
mcrypt support => enabledmcrypt_filter support => 
enabled
Version => 2.5.8
Api No => 20021217
Supported ciphers => cast-128 gost rijndael-128 twofish cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes arcfour 
Supported modes => cbc cfb ctr ecb ncfb nofb ofb stream 

Directive => Local Value => Master Value
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

composer update 没有返回错误,artisan 不起作用,当我使用 --no-scripts 时它不起作用,并且在我使用 --no-scripts 后仍然无法编译... PHP 没有返回任何错误或记录任何错误。我不知道还能做什么。我已经尝试了我能想到的一切,以及我在网上能找到的一切。我想要的只是安装一个简单的包,而不是遇到这么大的混乱。

在我解决这个问题之前,我很犹豫是否继续从事这个项目,但我必须使用我仍在工作的 laravel 版本重新开始工作(幸好我有 /vendor 文件的备份副本;他们没有被添加到我的 github 存储库中)。

但我们将不胜感激任何帮助,因为我确实需要使用这些软件包,而且我知道如果我再次尝试更新,我将来会遇到问题。

编辑:值得注意的是,我见过的各种问题的常见答案是删除 bootstrap/compiled.php。好吧,无论生成什么文件我都没见过,更不用说删除它了。

我什至尝试手动运行 artisan 命令(返回空白结果),但文件从未生成。

【问题讨论】:

    标签: php git laravel-4 composer-php


    【解决方案1】:

    几乎不可能得到答案。经过广泛的测试,我仍然发现自己离答案更近了。我什至不知道这是否是正确的答案,但我终于让工匠正常运行。这就是我所做的。

    首先,我使用 composer 安装了 Laravel (4.1) 的 FRESH 副本:

    composer create-project laravel/laravel --prefer-dist
    

    使用这个composer文件(基本上和上面一样,不需要包):

    {
        "name": "laravel/laravel",
        "description": "The Laravel Framework.",
        "keywords": ["framework", "laravel"],
        "license": "MIT",
        "require": {
            "laravel/framework": "4.1.*"
        },
        "autoload": {
            "classmap": [
                "app/commands",
                "app/controllers",
                "app/models",
                "app/database/migrations",
                "app/database/seeds",
                "app/tests/TestCase.php"
            ]
        },
        "scripts": {
            "post-install-cmd": [
                "php artisan optimize"
            ],
            "pre-update-cmd": [
                "php artisan clear-compiled"
            ],
            "post-update-cmd": [
                "php artisan optimize"
            ],
            "post-create-project-cmd": [
                "php artisan key:generate"
            ]
        },
        "config": {
            "preferred-install": "dist"
        },
        "minimum-stability": "dev"
    }
    

    并运行:

    composer update --no-scripts
    

    接着是:

    composer update
    

    当我上传它时,它不再向我抛出错误。

    不幸的是,我根本无法使用任何软件包。我认为这是最新版本的 Laravel 中的一个错误,并且非常烦人。我非常怀疑实际上每个包都在 4.1 中损坏了,尽管这可能是问题所在:http://forums.laravel.io/viewtopic.php?pid=55313#p55313

    另一种可能是先运行 composer install:

    composer install --no-scripts
    

    “--no-scripts”是可选的,如果不能正常安装,则不需要--no-scripts。有一次我删除了我的供应商文件夹并运行了 composer install 但无论如何我都无法弄清楚。

    无论是什么情况,我都不能使用我添加到 app/libraries 文件夹中的库(我注意到默认情况下不存在),此时我也不能使用任何作曲家包。我真的不确定如何让我的 PDF 脚本立即运行……或者至少在 Laravel 修复这些问题之前。

    【讨论】:

    • 运行composer update --no-scripts 为我解决了这个问题。我拥有的其中一个软件包正在运行一个工匠脚本,如果我删除该软件包就会失败
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2013-06-13
    • 2014-11-23
    • 1970-01-01
    • 2017-03-03
    • 2021-08-23
    相关资源
    最近更新 更多