Installera YAML som PHP extension

By . Latest revision .

Vi skall installera YAML som en PHP extension.

YAML Ain’t Markup Language, är ett läsbart format på att skriva till exempel konfigurationsfiler till programmeringsspråk och applikationer.

Det vi behöver är libyaml, som implementerar en parser för YAML, samt php-yaml som är en PHP-wrapper till biblioteket. Dessa skall installeras och kopplas ihop med vår PHP-installation.

#Läs mer

Läs mer om YAML på deras officiella webbplats.

Läs om libyaml, biblioteket som parsar YAML.

Läs mer på hemsidan om PHPs YAML extension.

Läs mer i PHP-manualen om PHPs YAML extension och vilka funktioner som stöds.

#Förutsättning

Du har PHP i din path.

#Verifiera att YAML fungerar

I kursrepot för design-kursen finns ett PHP-skript som hjälper dig att verifiera att PHP YAML är installerat och fungerar.

Börja med att köra det skriptet på din lokala maskin för att se om du redan har modulen installerad.

Du kan provköra skriptet på dbwebb.se för att se hur det kan se ut när allt är installerat och klart.

Som ett komplement kan du även testa att yaml fungerar direkt i terminalen.

Först kan du kontrollera om yaml finns i nuvarande konfiguration av PHP.

$ php -i | grep yaml
yaml
yaml.decode_binary => 0 => 0
yaml.decode_php => 1 => 1
yaml.decode_timestamp => 0 => 0
yaml.output_canonical => 0 => 0
yaml.output_indent => 2 => 2
yaml.output_width => 80 => 80

Skrivs inget ut så har du inte stöd för yaml.

Därefter kan du testa att använda yaml med PHP.

$ php -r 'echo yaml_emit(["a" => "b", "c" => "d"]);' 
---
a: b
c: d
...

Har du inte stöd för yaml så får du ett felmeddelande.

#Installera på Windows och XAMPP

I skriptet som testar om yaml finns installerat skrivs det ut detaljer om ditt system. Använd de detaljerna för att ladda hem det paketet av php-yaml som passar just ditt system.

  1. Du väljer (en stabil) version på nedladdningssidan och klickar på länken vid DLL. Välj nu det paket som matchar din PHP-installation.

  2. Öppna zip-filen. som laddas ned.

  3. Kopiera yaml.dll och spara i katalogen \xampp\php. Filen behöver ligga i en katalog som ligger i din $PATH.

  4. Kopiera php_yaml.dll och spara i katalogen \xampp\php\ext.

  5. Lägg följande rad i slutet av din PHP ini-fil.

extension=php_yaml.dll

Du kan nu dubelkolla att php-yaml fungerar via terminalen. Det skall fungera både via cmd.exe och via Cygwin.

Starta om Apache och testa att det fungerar även via Apache.

#Installera på Mac OS och XAMPP

Det förutsätts att du har lagt in de kommandon i din PATH som beskrivs i MacOS-delen av dokumentet Lägg PHP i pathen.

#Installera libyaml

Börja med att installera libyaml med pakethanteraren brew.

$ brew update
$ brew install libyaml

Verifiera att det är installerat med

$ brew list

Du skall se libyaml i listan.

#Installera php-yaml

Installera nu php-yaml med pecl.

$ sudo pecl install yaml 

Om du får problem med en varning så kan du använda --ignore-errors för att hantera det.

WARNING: pecl.php.net/yaml: conflicting files found: yaml/LICENSE (pear.symfony-project.com/yaml)

$ sudo pecl install --ignore-errors yaml 

Om du får problem med phpize, som beror på att programmet autoconf saknas, så löser du det med brew.

Cannot find autoconf … ERROR: phpize failed

Installera programmet autoconf med brew.

$ brew install autoconf

När pecl är klart så visas troligen följande text i slutet.

You should add “extension=yaml.so” to php.ini

Då gör vi det.

#Konfigurera php.ini med php-yaml

Du hittar PHPs konfigfil på följande sätt.

$ php -i | grep Configuration
Configuration File (php.ini) Path => /Applications/XAMPP/xamppfiles/etc
Loaded Configuration File => /Applications/XAMPP/xamppfiles/etc/php.ini
Configuration

I mitt exempel är konfigfilen /Applications/XAMPP/xamppfiles/etc/php.ini.

Jag kan antingen öppna den filen i min texteditor och lägga till raden längst ned. Gör det om du är osäker.

Eller så gör jag det via kommandoraden.

$ sudo sh -c 'echo "extension=yaml.so" >> /Applications/XAMPP/xamppfiles/etc/php.ini'
$ tail -1 /Applications/XAMPP/xamppfiles/etc/php.ini
extension=yaml.so

Du kan verifiera att php-yaml nu fungerar via terminalen.

Starta om apache och verifiera att det även fungerar där.

#Installera på Linux

På min debian installerar jag först libyaml med apt-get.

$ sudo apt-get install libyaml-dev

Sedan installerar jag pecl tillsammans med källkodsfiler för PHP-distributionen.

$ sudo apt-get install php-pear php5-dev

Med pecl installerar jag php-yaml. Jag väljer den versionen som finns tillgänglig och är stabil.

$ sudo pecl install yaml

På min debian har jag två olika konfigfiler för PHP, en för apache-varianten och en för cli. Jag behöver lägga till följande i dem båda.

extension=yaml.so

När det är klar så kan jag verifiera att det fungerar i terminalen.

Starta om apache och verifiera att det även fungerar där.

#Avslutningsvis

Det finns en forumtråd som ger tips och ledtrådar till hur man installerar PHP YAML på olika miljöer. Kika där om du får problem.

#Revision history

  • 2016-10-11: (A, mos) Första utgåvan.

Document source.

Category: labbmiljo, php.