configure: エラー: libyaml をインストールしてください

configure: エラー: libyaml をインストールしてください

私はインストールに従っていますPHP での YAML 解析の基礎Fedora 20 に PHP 用の YAML をインストールします。

私は以下の手順をすべて実行しました:

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 ではなく libyaml-dev をインストールする必要があります。 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 ]
      }
    }
  }
}

関連情報