настройка: ошибка: установите libyaml

Я после установки основы YAML парсинга на PHP установить YAML для PHP в Fedora 20.

Я прошел все эти шаги:

wget http://pecl.php.net/get/yaml-1.1.0.tgz
tar -xvzf yaml-1.1.0.tgz
cd yaml-1.1.0
phpize
./configure && make && make install

но последнее не работает:

# ./configure && make && make install
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
.../...
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking whether to enable LibYAML suppot... yes, shared
checking for yaml headers... not found
configure: error: Please install libyaml

как я получаю "пожалуйста, установите libyaml", я проверил, установлен ли... так и есть!

# yum list installed | grep yaml
libyaml.x86_64                         0.1.6-1.fc20                    @updates 
yaml-cpp03.x86_64                      0.3.0-4.fc20                    @anaconda

и конечно если я создаю php файл с вызовом yaml_parse_file(), Я получаю сообщение об ошибке:

Fatal error: Call to undefined function yaml_parse_file() in XXXfile on line YYY

что может быть не хватает?

5
задан fedorqui
02.02.2023 5:23 Количество просмотров материала 3061
Распечатать страницу

2 ответа

вы должны установить libyaml-dev, а не libyaml. Я устанавливаю его на centos:

[vagrant@localhost yaml-1.2.0]$ sudo yum search libyaml
============================================ N/S Matched: libyaml          ============================================
libyaml-devel.i686 : Development files for LibYAML applications
libyaml-devel.x86_64 : Development files for LibYAML applications
libyaml.i686 : YAML 1.1 parser and emitter written in C
libyaml.x86_64 : YAML 1.1 parser and emitter written in C
[vagrant@localhost yaml-1.2.0]$ sudo yum install -y libyaml-devel.x86_64

чем я успешно。

1
отвечен ShineChun 2023-02-03 13:11

О, это не должно было так закончиться, но я нашел решение через Как установить с Pecl документация в коде Google:

  • установить LibYAML используя ваш любимый метод. Например, на машине Ubuntu sudo apt-get install libyaml-dev получите то, что вам нужно.
  • sudo pecl install yaml-beta
  • отредактируйте php.настройки ini и добавить extension=yaml.so
  • увидеть, если он работал с php --re yaml

как я на Fedora, я должен был использовать немного другой подход:

# yum search yaml | grep -i php
php-symfony-YAML.noarch : The Symfony YAML Component
php-pecl-yaml.x86_64 : PHP Bindings for yaml
php-symfony-yaml.noarch : Symfony Yaml Component
php-symfony2-Yaml.noarch : Symfony2 Yaml Component
php54-php-pecl-yaml.x86_64 : PHP Bindings for yaml
php56-php-pecl-yaml.x86_64 : PHP Bindings for yaml
syck.i686 : YAML for C, Python, and PHP
syck.x86_64 : YAML for C, Python, and PHP
syck-php.x86_64 : YAML module for php

Я php-pecl-yaml.x86_64:

# yum install php-pecl-yaml.x86_64

я добавил строку в мой php.ini файл, перезапущен apache на всякий случай, и теперь я получаю хороший результат от:

# php --re yaml
Extension [ <persistent> extension #16 yaml version 1.1.1 ] {

  - Dependencies {
    Dependency [ date (Optional) ]
  }

  - INI {
    Entry [ yaml.decode_binary <ALL> ]
      Current = '0'
    }
    Entry [ yaml.decode_timestamp <ALL> ]
      Current = '0'
    }
    Entry [ yaml.output_canonical <ALL> ]
      Current = '0'

    .../...

    Function [ <internal:yaml> function yaml_emit_file ] {

      - Parameters [5] {
        Parameter #0 [ <required> $filename ]
        Parameter #1 [ <required> $data ]
        Parameter #2 [ <optional> $encoding ]
        Parameter #3 [ <optional> $linebreak ]
        Parameter #4 [ <optional> array $callbacks ]
      }
    }
  }
}
0
отвечен fedorqui 2023-02-03 15:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх