为什么工匠不会在作曲家更新上工作并且不返回任何错误消息?

Jai*_*man 3 php git composer-php laravel-4

我一直在用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]
Run Code Online (Sandbox Code Playgroud)

这是我的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"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

fatal: No names found, cannot describe anything.
* master [KEY REMOVED] Remove mPDF Library
Run Code Online (Sandbox Code Playgroud)

这是在我的git仓库中引用最新的提交.为什么提到这个?我认为这可能是问题的一部分,直到我意识到它甚至在一个全新的安装上搞砸了.

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

Fatal error: Class 'Patchwork\Utf8\Bootup' not found in [ROOT PATH REMOVED]/bootstrap/autoload.php on line 46
Run Code Online (Sandbox Code Playgroud)

我读到有些文件可能已经丢失,因为我升级到4.1.所以我填写了所有丢失的文件,我得到了一个空白的白页.

根据我正在阅读的内容,全新安装的laravel应该能够运行工匠,或者至少在运行之后composer install.我甚至无法在全新的安装上工作.所以我将我的xampp安装更新到了最新版本.

我的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
Run Code Online (Sandbox Code Playgroud)

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

在我解决这个问题之前,我对继续处理这个项目犹豫不决,但是我必须使用我仍然工作的laravel版本重新开始工作(谢天谢地,我有/ vendor文件的备份副本;它们不是被添加到我的github回购).

但是对此的任何帮助都将非常感激,因为我确实需要使用这些软件包,我知道如果我再次尝试更新,我将来会遇到问题.

编辑:值得注意的是,我在各种问题上看到的一个常见答案是删除bootstrap/compiled.php.好吧,无论我从未见过生成的文件,更不用说能够删除它了.

我甚至尝试手动运行artisan命令(返回空白结果)并且文件从未生成.

Jai*_*man 6

得到答案几乎是不可能的.经过广泛的测试后,我仍然发现自己没有接近答案.我甚至不知道这是否是正确的答案,但我最终让工匠正常运行.这就是我做的.

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

composer create-project laravel/laravel --prefer-dist
Run Code Online (Sandbox Code Playgroud)

使用这个作曲家文件(基本上与上面没有包需要的相同):

{
    "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"
}
Run Code Online (Sandbox Code Playgroud)

并运行:

composer update --no-scripts
Run Code Online (Sandbox Code Playgroud)

其次是:

composer update
Run Code Online (Sandbox Code Playgroud)

当我上传它时,它不再向我提出错误.

不幸的是,我根本无法获得任何包.我认为这是Laravel最新版本中的一个错误,非常烦人.我非常怀疑4.1版中的每一个软件包都破了,虽然它可能是问题所在:http://forums.laravel.io/viewtopic.php?pid = 55313#p55313

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

composer install --no-scripts
Run Code Online (Sandbox Code Playgroud)

"--no-scripts"是可选的,如果它没有正常安装 - 不需要脚本.有一次我删除了我的供应商文件夹并运行了作曲家安装,但无论如何我无法弄明白.

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