Het upgraden van de Native PHP-installatie op OS X Mountain Lion

Laten we eens kijken hoe we de native OS X 10.8 PHP-installatie handmatig kunnen upgraden naar de nieuwste versie (momenteel 5.4.5) en andere nuttige software kunnen installeren terwijl we bezig zijn. * AMP-pakketten zijn praktisch, maar zelden up-to-date, dus het absorberen van de procedure in dit artikel is van onschatbare waarde voor elke PHP-ontwikkelaar.


Theory of Building from Source

Als je alleen geïnteresseerd bent in het praktische aspect van het installeren van PHP, kun je dit gedeelte overslaan, maar het kan handig zijn om later te weten hoe het werkt en waarom bepaalde commando's nodig zijn.

Elke installatie van software uit de bron volgt in feite dezelfde reeks opdrachten: Download de bronbestanden, configureer, maak, optioneel test, installeer.

configureren

Het "configure" -script vertelt "make" wat er gebouwd gaat worden. Uitgevoerd door "./configure" in te typen, analyseert het configuratiescript de afhankelijkheden, verifieert u dat u een ondersteund besturingssysteem uitvoert, stelt de nodige bestanden voor het gegeven besturingssysteem samen en genereert uiteindelijk een maakbestand, dat wanneer "make" wordt aangeroepen, dicteert hoe en wat precies moet worden gebouwd.

"Configure" vertelt "make" wat er gebouwd gaat worden

Als het configuratiescript ontbrekende afhankelijkheden of fouten vindt, voert het een exit uit en stopt het de uitvoering, zodat de gebruiker obstakels kan verwijderen of omzeilen voordat hij verdergaat. Het configure-commando komt altijd eerst bij het bouwen vanaf de bron.

Maken

Vervolgens bouwt "make" op wat configure heeft verteld om te bouwen. "Make" wordt geïnitialiseerd door simpelweg "make" te typen, en is eigenlijk een GNU-hulpprogramma dat over het algemeen wordt gebruikt om een ​​set bestanden bij te houden en ze indien nodig opnieuw te compileren.

"Make" bouwt wat configure heeft verteld om te bouwen

Om te kunnen functioneren, is een makefile nodig - een bestand waarin de richtlijnen worden beschreven en relaties tussen de betreffende bestanden worden vermeld. Eenmaal uitgevoerd, leest het make-commando het makefile en voert het de taken uit.

De opdracht "make test" voert het commando make uit maar test ook de compilatie tegen een testdoel. Niet alle brondistributies ondersteunen "make-test", dus tenzij expliciet aangegeven in de installatiedocumentatie van de software die wordt geïnstalleerd, moet men het reguliere "merk" gebruiken.

De opdracht "make test" voert het commando make uit maar test ook de compilatie tegen een testdoel.

"Sudo make install" installeert de bestanden die "maken" ingebouwd in vooraf gedefinieerde mappen. Het behandelt alle insluitsels, updates en lost paden op en verplaatst alles naar waar het zou moeten zijn. In feite is de installatie voltooid en hoeft de gebruiker meestal niets anders te doen.

Dit is eigenlijk precies wat Homebrew - de pakketbeheerder die we in de volgende paragraaf installeren - kan doen. Het kan dezelfde stroom intern uitvoeren. Je ziet er niet echt direct iets van, maar min of meer dezelfde keten wordt uitgevoerd, als de "formule" die door de "brouwer" is ingediend op die manier is gemaakt.

Het maakt het hele proces minder omslachtig door automatisch te controleren op afhankelijkheden en deze te installeren voordat u naar het hoofdpakket gaat. Vervolgens wordt het gedownload en uit het archief gehaald en wordt de keten configure, make, make install uitgevoerd om de installatie te voltooien.

Bijna elke installatie van bron volgt dezelfde stappen: downloaden, configureren, maken, installeren.

homebrew


Van Homebrew thuis

Om de installatie van PHP zo soepel mogelijk te laten verlopen, moeten we Homebrew installeren, een pakketbeheerder voor OSX die veel installaties voor je kan verwerken - installaties die anders ingewikkelde bouwprocedures zouden kunnen vereisen en die afhankelijk kunnen zijn van uren om op te lossen.

Als Homebrew is geïnstalleerd, zal dit je op de lange termijn ten goede komen.

Als Homebrew is geïnstalleerd, zal dit je op de lange termijn ten goede komen, niet alleen voor het doel van dit artikel. Het biedt een snelle manier om veelgebruikte bibliotheken en software te installeren zonder van broncode te moeten bouwen.
Om het te installeren, moeten we het volgende doen (sla dit gedeelte over als u Homebrew hebt geïnstalleerd):

  1. Installeer XCode via de App Store. Installeer Command Line Tools eenmaal geïnstalleerd via de XCode-app zelf, of download en installeer vanaf http://developers.apple.com. We hebben XCode en CLT nodig omdat Homebrew ze nodig heeft.
  2. Installeer X11 vanaf hier. Dit is ook een Homebrew-vereiste. Kies de nieuwste versie die beschikbaar is, niet noodzakelijk degene die hier is gelinkt.
  3. Installeer Homebrew vanuit GitHub.
  4. Als je problemen tegenkomt, moet je misschien het volgende doen na stap 1 en 2:
     $ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer $ ln -s / opt / X11 / usr / X11

    ... overgenomen uit dit bericht. Dit gebeurt om een ​​of andere reden in sommige gevallen van Mountain Lion.

Eenmaal klaar, voer je een brouwend arts uit en controleer je of alles werkt (volgens de instructies op de website van Homebrew).


PHP

Het is te verwachten dat voor het installeren van PHP bepaalde bibliotheken zijn geïnstalleerd. Gelukkig is Homebrew hier om deze installaties voor ons af te handelen. Installeer het volgende:

 brouwen installeren libjpeg brouwen installeren pcre brouwen installeren libxml2 brouwen mcrypt installeren

Download zodra je klaar bent de PHP-bronbestanden van Php.net. Pak het archief uit, open je terminal en ga naar de bronmap (bijvoorbeeld cd ~ / Downloads / php-5.4.5 / of waar je de bronnen ook hebt gedownload).

Als u van plan bent om met Zend Framework 2 te werken en wilt beginnen met de voorbeeldskeletapplicatie zoals gemaakt door Rob "Akrabat" Allen, of als u van plan bent om uw toepassing in meerdere langauges te implementeren, hebt u php-intl-ondersteuning nodig. Om ervoor te zorgen dat het configure-script rekening houdt met php-intl tijdens het maken van de makefile, moeten we een andere afhankelijkheid - ICU installeren. Download dit van ICU-Project.org en voer uit:

 tar xzvf icu4c-4_8_1-src.tgz cd icu / source ./runConfigureICU MacOSX make sudo make install

Dit behandelde alle elementaire afhankelijkheden die PHP ooit van ons zou willen hebben (voorlopig). We kunnen het nu eindelijk bouwen en installeren.

installeren

Eerst voert u in de niet-geresoleerde bronmap van PHP de volgende opdracht configure uit:

 ./ configure \ --prefix = / usr \ --mandir = / usr / share / man \ --infodir = / usr / share / info \ --sysconfdir = / private / etc \ --with-apxs2 = / usr / sbin / apxs \ --enable-cli \ --with-config-file-path = / etc \ --with-libxml-dir = / usr \ --with-openssl = / usr \ --with-kerberos = / usr \ --with-zlib = / usr \ --enable-bcmath \ --with-bz2 = / usr \ --enable-calendar \ --with-curl = / usr \ --enable-dba \ --enable -exif \ --enable-ftp \ --with-gd \ --enable-gd-native-ttf \ --with-icu-dir = / usr \ --with-iodbc = / usr \ --with-ldap = / usr \ --with-ldap-sasl = / usr \ --with-libedit = / usr \ --enable-mbstring \ --enable-mbregex \ --with-mysql = mysqlnd \ --with-mysqli = mysqlnd \ --without-pear \ --with-pdo-mysql = mysqlnd \ --with-mysql-sock = / var / mysql / mysql.sock \ --with-readline = / usr \ --enable-shmop \ --with-snmp = / usr \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --with-tidy \ --enable-wddx \ --met-xmlrpc \ --with-iconv-dir = / usr \ --with-xsl = / usr \ --enable-zip \ --with-imap = / usr / local / imap-2007 \ --with-kerberos \ --with-imap-ssl \ --enable-intl \ --with-pcre-regex \ --with-pgsql = / usr \ --with-pdo-pgsql = / usr \ - -with-freetype-dir = / usr / X11 \ --with-jpeg-dir = / usr \ --with-png-dir = / usr / X11

Als je klaar bent, voer je uit

$ maak een test

"Make test" runs maken en testen de compilaties op fouten

Zoals vermeld in de sectie over de bouwtheorie, maakt deze uitvoert de compilatie en test deze. Dit kan een tijdje duren, tot 30 minuten, omdat elk facet van PHP wordt getest. Als je klaar bent, als PHP fouten heeft gevonden (en waarschijnlijk zal dit) ze rapporteren aan de ontwikkelaars door de instructies op het scherm te volgen. Maak je geen zorgen, alles is nog steeds goed - de fouten die het vindt zijn meestal minder dan belangrijk.


Zoals je kunt zien, moeten er 11503 tests worden uitgevoerd. Dit gaat even duren.

Als je de originele PHP al hebt geactiveerd en geconfigureerd, maak dan nu een back-up van je php.ini-bestand. Het zou in /etc/php.ini moeten staan

Voer ten slotte het volgende uit om PHP daadwerkelijk te installeren.

$ sudo make install

Het beste is om het nieuwe php.ini-bestand niet te overschrijven met je oude bestand als je een back-up hebt gemaakt. Kopieer in plaats daarvan de waarden die u handmatig nodig hebt om aan de veilige kant te blijven - op die manier zorgen wij ervoor dat het nieuwe php.ini-bestand volledig compatibel is met de nieuw geïnstalleerde versie.


Apache-configuratie

Bijna klaar! Als je eerder al PHP op je computer had geactiveerd en het enige doel van het lezen van dit artikel was om de bestaande PHP te upgraden, dan ben je klaar - alles zou moeten werken.

Als dat niet het geval is, moeten we PHP inschakelen in de native Apache-installatie van OSX. Omdat het httpd.conf-bestand waarschijnlijk op de standaardlocatie staat, opent u het via Terminal in TextEdit, zoals zo:

$ SUDO_EDITOR = "open -FWne" sudo -e /etc/apache2/httpd.conf

Ik gebruik hier de opdracht SUDO EDITOR om het bestand in TextEdit te openen, eenvoudig omdat ik het veel gemakkelijker vind om bestanden te bewerken dan Vim of Nano. Ik had net zo goed "$ sudo vim /ect/apache2/httpd.conf" kunnen gebruiken om het in vim te bewerken.

Reageer vervolgens op de volgende regels (deze staan ​​niet naast elkaar - gebruik de opdracht Zoeken om ze te vinden)

 LoadModule php5_module libexec / apache2 / libphp5.so Include /private/etc/apache2/extra/httpd-vhosts.conf

De eerste regel activeert het gebruik van PHP als een Apache-module. De tweede regel is aanwezig, zodat het hoofdbestand httpd.conf (Apache-configuratie) de virtuele hosts uit het bestand vhosts verzamelt en ons de moeite van overmatig bewerken in het overdreven gevoelige httpd.conf bespaart. Dit heeft als bijkomend voordeel dat je een vhosts-bestand ergens buiten / etc kunt opslaan en het kunt back-uppen voor andere ontwikkelmachines of herinstallaties..

Een heel praktische benadering is om het te hosten op een cloudservice zoals Google Drive of Dropbox en er rechtstreeks vanaf httpd.conf naar te linken. Op die manier, wanneer u een nieuwe virtuele host toevoegt, wordt deze automatisch op al uw machines geïnstalleerd zodra u de lokale Apache-server opnieuw opstart..


Een vhost toevoegen en inpakken

Een virtuele host is een lokaal gehost imaginair domein. In principe kunt u uw projecten in de browser testen door verschillende URL's in te voeren. Op mijn computer zou ik bijvoorbeeld http: //mactuts.tutorial kunnen bezoeken en de Hello World-app kunnen zien waar deze sectie mee eindigt, of ik zou http://mw.dev kunnen bezoeken om de ontwikkelingsversie van een project te bekijken dat ik ben werken aan. Heel eenvoudig, een andere URL activeert een andere bronmap en opent een ander project als een website. Hier is een korte handleiding over het toevoegen van een vhost - als je al vhosts hebt ingesteld of alles begrijpt, kun je dit gedeelte overslaan.

Stap 1: Het hosts-bestand bewerken

Eerst noemen we onze sample vhost "mactuts.tutorial". Hiertoe voegt u een item toe aan / etc / hosts die er als volgt uitziet:

 127.0.0.1 mactuts.tutorial

Dit betekent dat toegang tot de URL http: //mactuts.tutorial in de browser gaat naar 127.0.0.1:80 of, met andere woorden, naar poort 80 van onze lokale server (Apache).


Dit is een voorbeeld van een hosts-bestand. Opmerking Ik heb ook een aantal andere virtuele hosts ingesteld op deze machine

Stap 2: Voeg een Apache vhost toe

Voeg vervolgens een blok toe aan etc / apache2 / extra / httpd-vhosts.conf dat er ongeveer zo uitziet:

  ServerName mactuts.tutorial DocumentRoot "/ Users / USERNAME / Sites / mactuts" ServerAdmin [email protected]  Opties-indices FollowSymLinks AllowOverride Alle bestellingen toestaan, weigeren van iedereen toestaan  

Vervang USERNAME door uw eigen gebruikersnaam, zonder de accolades. Dit vertelt Apache het volgende: Als je iets op poort 80 hebt, controleer dan de originele url naam. Als het mactuts.tutorial is, stel dan al die opties in.

Stap 3: Start Apache opnieuw

Start vervolgens Apache opnieuw met

 $ sudo apachectl restart

Stap 4: Maak het indexbestand aan

3) Maak een map "/ Gebruikers / USERNAME / Sites / mactuts" (vervang uiteraard USERNAME door de naam van uw OSX-gebruiker) en plaats hierin een index.php-bestand met de volgende inhoud:

 

Stap 5: Bekijken!

Ga naar http: //mactuts.tutorial. Je zou "Hello World" moeten zien!


alternatieven

Onlangs verscheen een alternatief voor deze aanpak - het installeren van PHP via Homebrew zelf. Het probleem is dat er op het moment van schrijven (begin augustus 2012) geen officiële kanalen zijn, dus een alternatieve tik moet worden geactiveerd voor Homebrew.

Ook de OS X-versie waar ik dit op heb getest, Mountain Lion, is helaas niet op die manier geïnstalleerd en gooide vage fouten naar me die ik niet kon oplossen. Als je je avontuurlijk voelt, vink dan dit bericht aan en probeer het te wijzigen volgens je eigen besturingssysteem en gewenste PHP-versie.

Een stabieler alternatief lijkt hier beschikbaar te zijn, maar de feedback is laks en er valt niet veel te doen, dus ik laat deze methoden over aan het experiment van de lezers..

updates

Hier zijn een paar alternatieven voorgesteld door commentatoren sinds het bericht werd gepubliceerd.

php_osx
Een ander (schijnbaar soepel werkend) alternatief hiervoor werd door commentator DaftViking onder mijn aandacht gebracht en omvatte het installeren van PHP via php_osx.

MacPorts
Hoewel ik de afbouw van Macports ten gunste van Homebrew aanmoedig, lijkt het erop dat Macports ook een gestabiliseerde versie van PHP heeft toegevoegd, dus het zou een ander werkalternatief kunnen bieden. Ik heb deze benadering persoonlijk niet getest, maar voor mensen die bekwaam zijn met Macports, is hier meer informatie te vinden. Dank aan Redditor nemeth88 voor de heads-up!


Conclusie

OS X wordt geleverd met een vooraf geïnstalleerde PHP- en Apache-configuratie. Helaas is de PHP-versie die wordt meegeleverd ernstig verouderd en wordt deze nooit bijgewerkt, behalve wanneer een nieuwe OS-versie wordt geïnstalleerd. Tegen die tijd is de nieuwe versie van PHP al verouderd, dus behalve het ophalen van een * AMP (Apache / Mysql / Php) -pakket (dat zelden of nooit over recente versies van PHP beschikt), wat kan iemand dan doen behalve het handmatig bijwerken?

In deze zelfstudie hebben we de basisbeginselen van het bouwen vanaf de bron besproken, hebben we een nieuwe bijgewerkte versie van PHP gebouwd en deze geïnstalleerd, en we hebben zelfs Homebrew geïnstalleerd, waardoor het nog eenvoudiger wordt om software en bibliotheken te installeren. . We hebben ook de creatie van een virtuele host besproken en onze installatie getest om te controleren of deze werkt. Ik hoop dat je ervan hebt genoten en dat alles werkte zoals gepland. Als je problemen tegenkomt, kun je berichten plaatsen in de opmerkingen en we zullen samen de problemen oplossen.