2014-09-02 16 views
5

sulla distribuzione mia domanda attraverso laravel Forge, sto presentato con i seguenti errori:aggiornamento Composer non installando l'interezza della laravel app

Fatal error: Class 'Illuminate\Support\Arr' not found in 
/home/forge/toono.co/vendor/laravel/framework/src/Illuminate/Support/helpers.php 
on line 151 

Questo è dopo il comando composer update ha funzionato. Ho SSH nella directory e basso ed ecco, il file Arr.php non esiste.

Il codice è tirato dal ramo principale in BitBucket, e quindi le seguenti righe vengono eseguiti sul server di produzione:

cd /home/forge/default 
git pull origin master 
composer install 
php artisan migrate --force 

composer.json:

{ 
    "name": "laravel/laravel", 
    "description": "The Laravel Framework.", 
    "keywords": [ 
     "framework", 
     "laravel" 
    ], 
    "license": "MIT", 
    "require": { 
     "laravel/framework": "4.2.*" 
    }, 
    "require-dev": { 
     "way/generators": "2.*", 
     "fzaninotto/faker": "1.4.*@dev", 
     "barryvdh/laravel-debugbar": "1.*", 
     "flynsarmy/csv-seeder": "1.0.*" 
    }, 
    "autoload": { 
     "classmap": [ 
      "app/commands", 
      "app/controllers", 
      "app/models", 
      "app/database/migrations", 
      "app/database/seeds", 
      "app/tests/TestCase.php" 
     ] 
    }, 
    "scripts": { 
     "post-install-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan optimize" 
     ], 
     "post-update-cmd": [ 
      "php artisan clear-compiled", 
      "php artisan debugbar:publish", 
      "php artisan optimize" 
     ], 
     "post-create-project-cmd": [ 
      "php artisan key:generate" 
     ] 
    }, 
    "config": { 
     "preferred-install": "dist" 
    }, 
    "minimum-stability": "stable" 
} 

Composer.lock:

"require": { 
    "codesleeve/stapler": "~1", 
    "laravel/framework": "~4", 
    "php": ">=5.4.0" 
} 

Perché il file composer update non è stato salvato? Dopo un aggiornamento locale e persino sul ramo principale di Github, è disponibile lo Arr.php?

Se mi manca il codice necessario richiesto, faccelo sapere.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Arr.php è nuovo in 4.2. Il compositore.json del tuo live server specifica 4.2? – ceejayoz

+0

'" require ": {" laravel/framework ":" 4.2. * ",' È il file compositore.json del server epatico. – Ben

+0

Sono ovviamente coinvolte due macchine: una da sviluppare e una da eseguire il codice in "produzione". Come passa il codice da una macchina all'altra? Cosa succede dopo che il codice è entrato in quella macchina "di produzione"? Qualsiasi script/comando eseguito - quale? Puoi darci entrambi i file 'composer.json' e' composer.lock' del tuo progetto? (Accorciare quest'ultimo nelle voci pertinenti relative ai pacchetti di Laravel che stanno violando, se possibile). Anche l'aggiunta di output di "compositore install" sulla macchina prod potrebbe essere d'aiuto. – Sven

risposta

3

Ho risolto questo problema eliminando composer.lock e la cartella vendor all'interno del server di produzione. Ho quindi utilizzato composer update.

1

ho risolto questo ssh'ing nella casella tramite riga di comando (SSH [email protected])

se non si sa come SSH nel server, si va a stringere -> il server -> Chiavi SSH.

Qui si aggiunge la chiave pubblica (se non si sono installate le chiavi ssh, seguire questa guida: https://help.github.com/articles/generating-ssh-keys).

Se è stata configurata la chiave SSH, è sufficiente aprire il terminale e incollare il seguente comando ed eseguirlo; "pbcopy < ~/.ssh/id_rsa.pub", questo copierà la tua chiave pubblica negli appunti e potrai semplicemente incollarla nel campo chiave ssh in forge.

Ora posso ssh nel server.

Poi ho navigato nella cartella predefinita (cd/home/forgiare/default) e corse "aggiornamento compositore"

Si aggiorna ogni cosa e ha funzionato dopo.

Problemi correlati