Почему ремесленник не работает с обновлением композитора и не возвращает сообщений об ошибках?

Я столкнулся с сотней проблем с laravel. Недавно я обновил веб-сайт laravel 3 до laravel 4 и сохранил весь свой проект в репозиторий на Github. Поскольку у меня постоянно возникают проблемы со случайным редактированием файлов из неправильной папки, я просто создал локальный репозиторий git в своем рабочем каталоге, поэтому у меня есть ровно один каталог, с которым нужно иметь дело.

Все работало нормально, пока я не попытался установить некоторые пакеты laravel, которые мне удалось установить раньше. Всякий раз, когда я запускаю обновление композитора, ВСЕ мои ремесленные сценарии возвращают ошибку. Само сообщение об ошибке (предположительно ошибка PHP) не отображается, даже после того, как я убедился, что использую файл разработки PHP.ini.

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. Почему упоминает об этом? Я думал, что это может быть частью проблемы, пока не понял, что это не так даже при новой установке.

Да, я пытался удалить скрипты или запустить --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 до последней версии.

моя версия 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

обновление композитора не возвращает ошибок, ремесленник не работает, он не работает, когда я использую --no-scripts, и все еще не компилируется после того, как я использовал --no-scripts... PHP не возвращает никаких ошибок или также регистрируйте любые ошибки. Я не знаю, что еще делать. Я пробовал все, что мог придумать, и все, что мог найти в Интернете. Все, что я хотел, это установить простой пакет, а не столкнуться с этим огромным беспорядком.

Я не решаюсь продолжать работу над этим проектом, пока не решу эту проблему, но мне нужно вернуться к работе над ним, используя мою все еще работающую версию laravel (к счастью, у меня были резервные копии файлов /vendor; они не были добавляется в мой репозиторий github).

Но любая помощь в этом будет очень признательна, потому что мне действительно нужно использовать эти пакеты, и я знаю, что у меня будут проблемы в будущем, если я попытаюсь обновить снова.

РЕДАКТИРОВАТЬ: И следует отметить, что один общий ответ, который я видел на множество вопросов, — это удалить bootstrap/compiled.php. Ну я ни разу даже не видел сгенерированный файл, не говоря уже о возможности его удалить.

Я даже пытался запустить команды ремесленника вручную (что вернуло пустой результат), но файл так и не был сгенерирован.


person JaidynReiman    schedule 17.12.2013    source источник


Ответы (1)


Получить ответ на этот вопрос практически невозможно. После обширного тестирования я так и не оказался ближе к ответу. Я даже не знаю, правильный ли это ответ, но я НАКОНЕЦ-ТО заставил ремесленника работать правильно. Вот что я сделал.

Для начала я установил СВЕЖУЮ копию Laravel (4.1) с помощью composer:

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

Используя этот файл композитора (в основном то же самое, что и выше, но без пакетов):

{
    "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 --no-scripts

"--no-scripts" необязателен, если он не устанавливается нормально --no-scripts не нужен. В какой-то момент я удалил папку своего поставщика и запустил установку композитора, но я не мог понять это, несмотря ни на что.

Как бы то ни было, я не могу использовать библиотеки, которые я добавил в папку app/libraries (которые, как я заметил, не существуют по умолчанию), и я не могу использовать какие-либо пакеты композитора на данный момент. Я действительно не уверен, как заставить мои PDF-скрипты работать прямо сейчас... или, по крайней мере, пока Laravel не исправит эти проблемы.

person JaidynReiman    schedule 23.12.2013
comment
запуск composer update --no-scripts решил это для меня. Один из пакетов, которые у меня были, запускал ремесленный скрипт, который не работал, если я удалял этот пакет. - person dannio; 18.11.2015