2015-01-28 24 views
7

Tôi không phải là rất tốt với thiết lập HerokuHeroku PHP ứng dụng sụp đổ bash: vendor/bin/Heroku-php-apache2: Không có tập tin hoặc thư mục

Tôi đang cố gắng để đưa lên mạng một ứng dụng bằng PHP (với Mã Igniter) nhưng nó không hoạt động tốt. Đây là lỗi:

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

index.php nằm trong thư mục gốc. Nhà cung cấp thư mục cũng trong thư mục gốc nhà soạn nhạc làm công việc của mình Trong procfile:

web: vendor/bin/heroku-php-apache2 

Và trong index.php của tôi:

require('vendor/autoload.php'); 

Trong quá khứ tôi đã sử dụng cách boot.sh, vì vậy tôi m không thoải mái với cách mới. Tôi đã làm theo hướng dẫn này https://devcenter.heroku.com/articles/getting-started-with-php#introduction

Tôi nghĩ rằng tôi đã bỏ sót điều gì đó hiển nhiên. Nhưng tôi không biết gì. Cảm ơn bạn

+0

muốn hỏi, bạn viết yêu cầu này ở đâu ('vendor/autoload.php'); ?? Tôi mở file index.php nhưng không có vẻ như một nơi để viết –

Trả lời

12

composer.json khả năng của bạn tái định nghĩa các thiết lập bin-dir một cái gì đó khác hơn vendor/bin. Chạy composer config bin-dir để xem nó là gì (hoặc nhìn vào phần configcomposer.json của bạn, và điều chỉnh đường dẫn đến heroku-php-apache2 trong Procfile bạn cho phù hợp

Bạn cũng có thể chỉ cần thay đổi Procfile để tự động đọc các giá trị đúng:.

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

các thuyết minh tại https://devcenter.heroku.com/articles/php-support#web-servers cũng đề cập đến bin-dir bối cảnh này

+0

này Cảm ơn bạn nhưng các bin-dir đã được thiết lập để: ➜ ứng dụng git: (master) soạn cấu hình bin-dir vendor/bin không có gì nhiều hơn ở nhà soạn nhạc hơn này là: { "yêu cầu": { "RFD/ImageMagick": "~ 1.1" }, "đòi hỏi-dev": { "Heroku/Heroku-buildpack-php": "*" } } – Max

+0

Và 'cấu hình heroku' không hiển thị' BUILDPACK_URL', phải không? Nếu có, bạn đang sử dụng một số buildpack khác (có thể là bên thứ ba) ... để loại bỏ nó và đẩy lại. – dzuelke

+0

'web: $ (composer config bin-dir)/heroku-php-apache2 public /' thực thi lệnh hoạt động đặc biệt tốt. Mặc dù khi tôi thực thi lệnh 'composer config bin-dir', tôi đã nhận được' vendor/bin', ứng dụng của tôi bị lỗi một cách lặp đi lặp lại. Nhưng sau đó tôi cập nhật 'Procfile' bằng lệnh trên và tất cả đều hoạt động như ma thuật. Điều này có lẽ vì tệp '.gitignore' của tôi chứa'/vendor' trong đó, tôi không chắc chắn. Bất kỳ ý tưởng? – ikartik90

0

Bạn có cố gắng để loại bỏ procfile của bạn và thêm composer.json cơ sở

0

Thanks To David, đây là câu trả lời:

Bạn đang sử dụng phiên bản cũ của gói xây dựng - ứng dụng của bạn có BUILDPACK_URL được đặt thành https://github.com/heroku/heroku-buildpack-php.git#legacy. Chạy cấu hình heroku: bỏ đặt BUILDPACK_URL và đẩy một thay đổi trống (git commit -m "buildpack mới" --allow-empty sẽ làm).

Bởi vì tôi sao chép/dán vars cũ từ một dự án cũ (> 1 năm) sử dụng boot.sh

Có BUILDPACK_URL đó là URL không hợp lệ. Không cần phải đặt nó ngay bây giờ.

Cảm ơn dzuelke!

0

Ngoài việc tuân thủ các bước chính xác như mô tả ở đây:

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

tôi đã phải gỡ bỏ .env từ gitignore và cũng đặt

APP_KEY tạo sử dụng khóa thợ

php: tạo --show

tới.env

để làm việc này.

+0

Đối với khóa ứng dụng của bạn, tôi nhận được kết quả đầu ra như 'base64: XXXXXXXXXX ='. Bạn có bao gồm phần "base64:" trong tệp .env không? –

+0

@ConnorLeech Có, bạn bao gồm phần "base64:". Tính năng này cho phép chúng tôi lưu trữ khóa ứng dụng với các ký tự đặc biệt bên trong tệp _.env_. Laravel giải mã nó khi đọc giá trị của khóa. –

1

Giải pháp của tôi là thêm mã bên dưới vào composer.json.

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

Sau đó chạy composer update.

Các vấn đề liên quan