настроить: ошибка: пожалуйста, установите libyaml

2755
fedorqui

Я следую за установкой Основы синтаксического анализа 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 

Чего не хватает?

0

2 ответа на вопрос

1
ShineChun

Вы должны установить 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 

чем я делаю успешно。

0
fedorqui

О, это не должно было закончиться так, но я нашел решение с помощью Howto Install с документацией Pecl в Code 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 ] } } } }