2015-01-28 5 views
7

ich mit Heroku Setup bin nicht sehr gutHeroku PHP app Absturz bash: Verkäufer/bin/Heroku-php-apache2: Keine solche Datei oder das Verzeichnis

Ich versuche online eine app in PHP zu setzen (mit Code Igniter), aber es funktioniert nicht gut. Hier ist der Fehler:

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

index.php befindet sich im Stammordner. Lieferantenverzeichnis auch in Stammordner Komponist machte seinen Job In procfile:

web: vendor/bin/heroku-php-apache2 

Und in meinem index.php:

require('vendor/autoload.php'); 

In der Vergangenheit habe ich die boot.sh Art und Weise verwendet, so dass ich Ich fühle mich nicht wohl mit dem neuen Weg. Ich folgte diesem Tutorial https://devcenter.heroku.com/articles/getting-started-with-php#introduction

Ich glaube, ich habe etwas offensichtlich übersehen. Aber ich weiß nicht was. Danke

+0

wollte fragen, wo hast du das schreiben benötigt ('vendor/autoload.php'); ?? öffnete ich die Datei index.php, aber es tut wie ein Ort, scheinen diese –

Antwort

12

Ihr composer.json wahrscheinlich erneut definiert die bin-dir Einstellung auf etwas anderes als vendor/bin hinzuzufügen. Führen Sie composer config bin-dir, um zu sehen, was es ist (oder schauen Sie auf Ihre composer.json ‚s config Abschnitt, und stellen Sie den Pfad zu heroku-php-apache2 in Ihrem Procfile entsprechend

Sie können auch nur die Procfile ändern automatisch den richtigen Wert zu lesen.

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

die Noten bei https://devcenter.heroku.com/articles/php-support#web-servers auch diese bin-dir Vorbehalt erwähnen

+0

Danke zu schreiben, aber das bin-Verzeichnis bereits eingestellt ist: ➜ app git: bin-dir Verkäufer/bin (Master) Komponist Config gibt es nichts mehr in Komponisten als dies: { "require": { "rfd/imagemagick": "~ 1.1" }, "require-dev": { "Heroku/Heroku-buildpack-php": "*" } } – Max

+0

Und 'heroku config' zeigt kein' BUILDPACK_URL', richtig? Wenn dies der Fall ist, verwenden Sie ein anderes (wahrscheinlich drittes) Buildpack ... entfernen Sie es also und drücken Sie erneut. – dzuelke

+0

Die Ausführung von 'web: $ (composer config bin-dir)/heroku-php-apache2 public /' funktioniert besonders gut. Auch wenn ich den 'composer config bin-dir'-Befehl ausführte, erhielt ich' vendor/bin', meine App stürzte immer wieder ab. Aber dann habe ich die 'Procfile' mit dem obigen Befehl aktualisiert und alles funktionierte wie Magie. Das lag wahrscheinlich daran, dass meine '.gitignore'-Datei'/vendor' enthielt, aber ich bin mir nicht sicher. Irgendeine Idee? – ikartik90

0

Haben Sie versucht, Ihre procfile zu entfernen und die Basis composer.json

0

Dank an David, hier ist die Antwort:

Sie verwenden die ältere Version des Buildpacks - für Ihre App ist BUILDPACK_URL auf https://github.com/heroku/heroku-buildpack-php.git#legacy festgelegt. Führen Sie heroku config aus: unset BUILDPACK_URL und drücken Sie eine leere Änderung (git commit -m "neues buildpack" --allow-empty wird tun).

Weil ich Kopieren/Einfügen alte Vars aus einem alten Projekt (> 1 Jahr) mit boot.sh

Es waren BUILDPACK_URL, die die schlechte URL war. Keine Notwendigkeit, es jetzt zu stellen.

Danke dzukelke!

0

Neben Sie die Schritte genau wie hier beschrieben:

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

I .env von gitignore entfernen musste und stellen auch

APP_KEY erzeugt mit

php Handwerker-Schlüssel: erzeugen --show

zu.env

, damit dies funktioniert.

+0

Für Ihren App Key bekomme ich die Ausgabe wie 'base64: XXXXXXXXXX ='. Fügen Sie den "base64:" - Teil in Ihre .env-Datei ein? –

+0

@ConnorLeech Ja, Sie enthalten den Abschnitt "base64:". Mit dieser Funktion können wir einen Anwendungsschlüssel mit Sonderzeichen in der Datei _.env_ speichern. Laravel decodiert es, wenn er den Wert des Schlüssels liest. –

1

Meine Lösung war, den folgenden Code zu composer.json hinzuzufügen.

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

Dann führen Sie composer update.

Verwandte Themen