#php #heroku #gd
#php #heroku #gd
Вопрос:
Я пытаюсь установить gd
(или ext-gd) библиотеки на heroku
.
Когда я пытаюсь установить их с помощью composer (у меня это выглядит следующим образом)
{
"name": "cool/app",
"type": "project",
"require": {
"ext-gd": "dev-master" (tried also installing "gd":"*", "ext-gd" : "*")
},
"license": "2016",
"authors": [
{
"name": "Dario",
"email": "my@email.it"
}
],
"minimum-stability": "dev"
}
Я получил
Problem 1
- The requested PHP extension ext-gd * is missing from your system. Install or enable PHP's gd extension.
Итак, попытался установить из apt-get ( sudo apt-get install php7-gd
), но у меня нет разрешений sudo, поскольку я не знаю пароль root heroku.
Есть какие-либо обходные пути по этому поводу?
Редактировать
Чтобы лучше объяснить, что я сделал, вот полный список команд
$ heroku run bash
Running bash on ⬢ app... up, run.1644 (Free)
~ $ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [app/app]:
Description []:
Author [, n to skip]: n
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package: ext-gd
Found 15 packages matching ext-gd
[0] stil/gd-text
[1] gd/plesk-bundle
[2] quince/persian-gd
[3] xepan/gd-text
[4] zgldh/gd-text-for-chinese
[5] ext-calendar
[6] ext-iconv
[7] ext-dbus
[8] ext-xml
[9] ext-opendkim
[10] ext-mcrypt
[11] ext-openssl
[12] ext-ssh2
[13] ext-mongo
[14] ext-mbstring
Enter package # to add, or the complete package name if it is not listed: ext-gd
Enter the version constraint to require (or leave blank to use the latest version): *
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "u11706/app",
"require": {
"ext-gd": "*"
}
}
Do you confirm generation [yes]?
~ $ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested PHP extension ext-gd * is missing from your system. Install or enable PHP's gd extension.
~ $ composer update --ignore-platform-reqs
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
И я не могу использовать gd
библиотеки, как говорит php (Laravel) Call to undefined function AppHttpControllersimagecreatefrompng()
Если я запускаю composer require ext-gd
со своего локального компьютера, я получаю
Using version ^0.0.0 for ext-gd
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
Ответ №1:
Прежде всего, вы должны выполнить связку с php локально.
1. Шаг Включите в свой composer.json
{
"require": {
..
"ext-gd": "*",
...
}
}
2. Шаг
Обновить composer
composer update
это занимает время….выпейте кофе..
3. Шаг публикация с помощью heroku cli
git push heroku master
На pusblish обратите внимание на выходные данные и проверьте, есть ли у вас что-то вроде моей строки 5 ниже, если у вас все в порядке.
1. remote: -----> PHP app detected
2. remote: -----> Bootstrapping...
3. remote: -----> Installing platform packages...
4. remote: - php (7.3.6)
5. remote: - ext-gd (bundled with php)
6. remote: - apache (2.4.39)
7. remote: - nginx (1.16.0)
8. remote: -----> Installing dependencies...
удачного кодирования.
Ответ №2:
На самом деле это не проблема Heroku, а что-то с вашим локальным компьютером.
Вы запускаетесь composer update
локально для повторной генерации composer.lock
. Ваш composer.json
содержит требование для ext-gd
, поэтому при установке PHP на вашем локальном компьютере это расширение должно быть включено, иначе требования не могут быть выполнены, и Composer выдает ошибку по этому поводу.
Эта точная ситуация и способы ее обхода описаны на https://devcenter.heroku.com/articles/php-support#using-optional-extensions — пожалуйста, внимательно следуйте приведенным там инструкциям, включая примечания в синем поле, которые инструктируют вас запускать composer update --ignore-platform-reqs
в случае необходимости.
Комментарии:
1. Спасибо, дзуэлке. Пожалуйста, посмотрите изменения в моем вопросе
2. наконец-то решена проблема с помощью composer install локально, прежде чем запускать репозиторий heroku git. Спасибо
Ответ №3:
gd доступен на Heroku, вы должны включить его, добавив следующую строку в composer.json (в разделе require).
"ext-gd": "*"
Убедитесь, что вы запускаете composer update
локально, прежде чем отправлять код в heroku, иначе он не будет работать.
Ответ №4:
Проблему удалось решить composer install
локально, а затем развернуть через репозиторий git в приложении heroku.