設定:錯誤:請安裝 libyaml

設定:錯誤:請安裝 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-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 安裝谷歌程式碼中的文件:

  • 使用您喜歡的方法安裝 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 ]
      }
    }
  }
}

相關內容