Я слежу за установкойОсновы анализа 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
Чего может не хватать?
решение1
Вам следует установить libyaml-dev, а не libyaml. На CentOS я установил его с помощью sudo yum install -y libyaml-devel.x86_64
.
[vagrant@localhost yaml-1.2.0]$ 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
решение2
О, это не должно было закончиться так, но я нашел решение черезКак установить с помощью 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 ]
}
}
}
}