Как исправить ошибку composer post-install-cmd script?
Я хотел бы использовать сценарий composer для выполнения некоторой установки post, такой как копирование файлов из папки bootstrap vendor в общую папку моего веб-приложения. У меня есть опыт ребенка с PHP world и разработкой веб-приложений.
Я пытаюсь узнать делать это, следуя в этом уроке
это моя структура каталогов*
это мой композитор.в JSON
{
"name": "Composer Script",
"description": "An example to demonstrate the use of Composer scripts",
"version": "1.0.0",
"require": {
"twitter/bootstrap": ">=3.0"
},
"scripts": {
"post-install-cmd": [
"ComposerScriptInstaller::postInstall"
],
"post-package-install": [
"/var/www/test/composer-script/install.sh"
]
}
}
это ComposerScriptInstaller.в PHP
class Installer
{
public static function postInstall(Event $event)
{
$composer = $event->getComposer();
// do stuff
}
public static function postPackageInstall(Event $event)
{
$installedPackage = $event->getOperation()->getPackage();
// do stuff
}
public static function warmCache(Event $event)
{
// make cache toasty
}
}
после выполнения composer install я получил эту ошибку
install.sh пусто в этот момент
Как исправить эту ошибку, и особенно что такое autoload?, Я не знаю, какие ключевые слова для поиска, пожалуйста, предложите мне прочитать.
4 ответов
на всякий случай, если кто-то снова наткнулся на эту проблему. Вот образец кормления ложкой. :)
в данном сценарии, как это
мы должны установить на нашем композитора.json в ff. настройки
"autoload": {
"psr-0": {
"ComposerScript\Installer" : ""
}
},
"scripts": {
"post-package-update": [
"ComposerScript\Installer::postPackageUpdate"
]
}
затем содержимое установщика.php-это
namespace ComposerScript;
use Composer\Script\Event;
class Installer
{
public static function postUpdate(Event $event)
{
$composer = $event->getComposer();
// do stuff
}
public static function postPackageUpdate(Event $event)
{
$packageName = $event->getOperation()
->getPackage()
->getName();
echo "$packageName\n";
// do stuff
}
public static function warmCache(Event $event)
{
// make cache toasty
}
}
выполнения php composer.phar update
будут работать без предупреждения.на post-package-install
значение относительно местоположения композитора.файл json. Не используйте абсолютное местоположение здесь.
кроме того, скрипты установки Composer ожидают PHP, а не sh!
Kongthap, я столкнулся с той же проблемой, и вот как я ее исправил:
"require": {...},
"autoload": {
"psr-0": {
"Dphp": "src/"
}
},
"scripts": {...}
Dphp-корневое пространство имен моего lib.
надеюсь, что это помогает.
Иногда проблема может быть в том, что глобальные пакеты устарели, вы можете исправить это, выполнив команду composer global update
перед composer install