Ich verfolge die Installation vonGrundlagen des YAML-Parsings in PHPum YAML für PHP in Fedora 20 zu installieren.
Ich habe alle diese Schritte durchlaufen:
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
Aber das letzte funktioniert nicht:
# ./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
Als ich die Meldung „Bitte installieren Sie libyaml“ erhalte, habe ich geprüft, ob es installiert ist … und es ist!
# yum list installed | grep yaml
libyaml.x86_64 0.1.6-1.fc20 @updates
yaml-cpp03.x86_64 0.3.0-4.fc20 @anaconda
Und wenn ich eine PHP-Datei mit einem Aufruf von erstelle, erhalte ich natürlich yaml_parse_file()
den Fehler:
Fatal error: Call to undefined function yaml_parse_file() in XXXfile on line YYY
Was kann fehlen?
Antwort1
Sie sollten libyaml-dev installieren, nicht libyaml. Unter CentOS habe ich es mit installiert 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
Antwort2
Oh, das sollte nicht so enden, aber ich habe eine Lösung gefunden durchSo installieren Sie mit PeclDokumentation in Code Google:
sudo apt-get install libyaml-dev
Installieren Sie LibYAML mit Ihrer bevorzugten Methode. Auf einem Ubuntu-Rechner erhalten Sie beispielsweise, was Sie brauchen.sudo pecl install yaml-beta
- Bearbeiten Sie Ihre php.ini-Einstellungen und fügen Sie hinzu
extension=yaml.so
- Überprüfen Sie, ob es funktioniert hat mit
php --re yaml
Da ich Fedora verwende, musste ich einen etwas anderen Ansatz verwenden:
# 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
Also habe ich installiert php-pecl-yaml.x86_64
:
# yum install php-pecl-yaml.x86_64
Ich habe die Zeile in meine php.ini
Datei eingefügt, Apache vorsichtshalber neu gestartet und erhalte nun eine gute Ausgabe von:
# 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 ]
}
}
}
}