heroku не удалось установить расширение gd

#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.