2015-01-28 17 views
7

Io non sono molto bravo con l'installazione HerokuHeroku php app Crash Bash: vendor/bin/Heroku-php-apache2: No such file or directory

Sto cercando di mettere on-line un app in PHP (con Code Igniter) ma non funziona bene. Ecco l'errore:

Heroku PHP app crash bash: vendor/bin/heroku-php-apache2: No such file or directory 

index.php è nella cartella principale. cartella vendor anche nella cartella principale compositore ha fatto il suo lavoro In procfile:

web: vendor/bin/heroku-php-apache2 

E nel mio index.php:

require('vendor/autoload.php'); 

In passato ho usato il modo boot.sh, così ho' Non mi sento a mio agio con il nuovo modo. Ho seguito questo tutorial https://devcenter.heroku.com/articles/getting-started-with-php#introduction

Penso di aver perso qualcosa di ovvio. Ma non so cosa. Grazie

+0

voleva chiedere, dove hai scritto questo richiede ('vendor/autoload.php'); ?? ho aperto il file index.php ma ci Non sembra come un posto per scrivere questo –

risposta

12

tuo composer.json probabile ri-definisce l'impostazione bin-dir a qualcosa di diverso vendor/bin. Eseguire composer config bin-dir per vedere quello che è (o di guardare la sezione 's tuoi composer.jsonconfig, e regolare il percorso per heroku-php-apache2 nella vostra Procfile conseguenza

È anche possibile cambiare il Procfile di leggere automaticamente il giusto valore:.

.
web: $(composer config bin-dir)/heroku-php-apache2 

le note a https://devcenter.heroku.com/articles/php-support#web-servers menzionano anche questo bin-dir avvertimento

+0

Grazie, ma il bin-dir è già impostata: ➜ app git: (master) compositore config bin-dir vendor/bin non v'è nulla di più in compositore di questo: { "richiedere": { "RFD/ImageMagick": "~ 1.1" }, "require-dev": { "Heroku/Heroku-buildpack-php": "*" } } – Max

+0

E 'heroku config' non mostra un' BUILDPACK_URL', giusto? Se lo fa, stai usando un altro buildpack (probabilmente di terze parti) ... quindi rimuovilo e premi di nuovo. – dzuelke

+0

L'esecuzione del comando 'web: $ (compositore config bin-dir)/heroku-php-apache2 public /' funziona particolarmente bene. Anche se eseguendo il comando 'composer config bin-dir' ho ricevuto' vendor/bin', la mia app si stava bloccando in modo ripetitivo. Ma poi ho aggiornato il 'Procfile' con il comando precedente e tutto ha funzionato come per magia. Ciò era probabilmente dovuto al fatto che il mio file '.gitignore' conteneva'/vendor' in esso, ma non sono sicuro. Qualche idea? – ikartik90

0

Hai provato a rimuovere il tuo procfile e aggiungere la composer.json di base

0

grazie a David, ecco la risposta:

Stai utilizzando la versione legacy di buildpack: la tua app ha BUILDPACK_URL impostato su https://github.com/heroku/heroku-buildpack-php.git#legacy. Esegui heroku config: disattiva BUILDPACK_URL e invia una modifica vuota (git commit -m "new buildpack" --allow-empty farà).

Perché io Copia/vecchi Vars incollato da un vecchio progetto (> 1 anno) utilizzando boot.sh

C'era BUILDPACK_URL che era il cattivo URL. Non c'è bisogno di dirlo ora.

Grazie dzuelke!

0

Oltre a seguire i passi esattamente come descritto qui:

https://devcenter.heroku.com/articles/getting-started-with-laravel

ho dovuto rimuovere .env da gitignore e anche impostare

APP_KEY generata utilizzando la chiave artigiano

php: generare --show

a.env

in modo che funzioni.

+0

Per la tua chiave app ricevo output come 'base64: XXXXXXXXXX ='. Includete la porzione "base64:" nel vostro file .env? –

+0

@ConnorLeech Sì, si include la porzione "base64:". Questa funzione ci consente di memorizzare una chiave di applicazione con caratteri speciali all'interno del file _.env_. Laravel lo decodifica quando legge il valore della chiave. –

1

La mia soluzione era aggiungere il codice di seguito a composer.json.

"require-dev": { 
    "heroku/heroku-buildpack-php" : "dev-master" 
} 

Quindi eseguire composer update.