configurar: error: instale libyaml

configurar: error: instale libyaml

Estoy siguiendo la instalación deConceptos básicos del análisis de YAML en PHPpara instalar YAML para PHP en Fedora 20.

Seguí todos estos pasos:

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

Pero el último no funciona:

# ./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

Cuando aparece el mensaje "Por favor, instale libyaml", verifiqué si está instalado... ¡y lo está!

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

Y, por supuesto, si creo un archivo php con una llamada a yaml_parse_file(), aparece el error:

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

¿Qué puede faltar?

Respuesta1

Deberías instalar libyaml-dev, no libyaml. En CentOS, lo instalé con 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

Respuesta2

Oh, esto no tenía la intención de terminar así, pero encontré una solución a través deCómo instalar con Pecldocumentación en Código Google:

  • Instala LibYAML usando tu método favorito. Por ejemplo, en una máquina Ubuntu sudo apt-get install libyaml-devobtendrás lo que necesitas.
  • sudo pecl install yaml-beta
  • Edite su configuración de php.ini y agregueextension=yaml.so
  • A ver si funcionó conphp --re yaml

Como estoy en Fedora, tuve que usar un enfoque ligeramente diferente:

# 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

Entonces instalé php-pecl-yaml.x86_64:

# yum install php-pecl-yaml.x86_64

Agregué la línea a mi php.iniarchivo, reinicié Apache por si acaso y ahora obtengo un buen resultado de:

# 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 ]
      }
    }
  }
}

información relacionada