konfigurieren: Fehler: Bitte installieren Sie libyaml

konfigurieren: Fehler: Bitte installieren Sie libyaml

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-devInstallieren 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 hinzuextension=yaml.so
  • Überprüfen Sie, ob es funktioniert hat mitphp --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.iniDatei 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 ]
      }
    }
  }
}

verwandte Informationen