OS X update & Laravel

OS X El Capitan

OS X El Capitan

Ik schreef eerder over OS X: Beginnen met Laravel en daar ben ik lekker mee aan het stoeien. Toen kwam een update van OS X om de hoek kijken en ineens is alles ontregeld. Alles is ge-update, dus mijn standaard inrichting op mijn Mac is weer gereset naar de standaard inrichting van Apple. Niet getreurd, met wat stappen kan je alles weer goed zetten:

  • Apache draait nog. De instellingen zijn echter weer gereset. Apple heeft ‘de instellingen hiervan bewaard onder: ‘httpd.conf.pre-update’. In principe zou je dit bestand kunnen hernoemen, maar ik zou het nieuwe bestand èn de back-up naast elkaar houden en de verschillen checken. Stel Apache is ge-update en de nieuwe versie heeft wat andere instellingen, fijn om die te behouden.
  • Virtual hosts, meerder websites op je Mac, werkt niet meer. Hier hebben ze het bestand waarin je dit regelt niet ge-backupped. Dus ‘httpd-vhosts.conf’ openen en weer aan de slag.

  • Check de rechten op ~/.composer en ~/.npm of deze nog beschrijfbaar zijn als je straks composer en npm gaat draaien.
  • Check de rechten op je sites of deze nog aangeboden kunnen worden via Apache.
  • Check de rechten op [je site]/storage,  [je site]/bootstrap/cache en  [je site]/vendor
  • Update Laravel en dergelijke met ‘composer update‘ in je project-folder in terminal
  • Update NPM en dergelijke met ‘npm update‘ in je project-folder in terminal
  • Check de rechten en instellingen op PHP
    • sudo cp /etc/php.ini.default /etc/php.ini
    • sudo chmod ug+w /etc/php.ini
    • sudo chgrp admin /etc/php.ini
    • sudo nano /etc/php.ini en verander:
      • date.timezone = “Europe/Amsterdam”
      • display_reporting = E_ALL
      • display_errors = On (handig lokaal voor testen)
    • Sla de wijzigingen op.
  • Daarmee ben je weer up to date en werkt het weer.
5 replies
  1. Marty van de Korput
    Marty van de Korput says:

    Hey Floris! Interessante blog. Ik heb Laravel draaien in de OS X Server. Na het upgraden van zowel de Server.app (naar 5.0.4) als het OS zelf (naar El Capitan) werkt het bij mij ook niet meer. Na heel veel stoeien ben ik inmiddels wel een eind verder, maar loop ik nu toch vast. De Server.app in El Capitan maakt nu gebruik van een reverse proxy setup van Apache, pfff. Hierdoor worden links en andere web content op basis van dynamisch gegenereerde url’s relatief aan de huidige host naam niet goed meer gegenereerd. Dat wil zeggen, ondanks dat ik de site vanaf het begin in https start, wordt bepaalde automatisch gegenereerde content toch in http gegenereerd. Hierdoor werkt de login bijvoorbeeld niet meer en krijg ik omwille van de mixed http/https inhoud ook security waarschuwingen in mijn browser. Ben jij toevallig bekend met dit probleem? Het is denk ik wel gerelateerd aan de Server.app? Hoe kun je in Laravel gemakkelijk met een webroot variabele werken, waardoor alle gegenereerde url’s de juiste ‘hardcoded’ webroot gebruiken of bijvoorbeeld altijd https links zijn. Alvast dank voor het meedenken.

    Reply
      • Marty van de Korput
        Marty van de Korput says:

        Hey Floris,

        Dank voor je snelle antwoord en het meedenken. Het aanpassen van de .htaccess file heeft tot nu toe nog niet geholpen. Normaal worden relatieve paden in url’s automatisch goed gegenereerd, dat wil zeggen https links als de basis url ook https was, wat bij mij altijd het geval is. Dit was met de Yosemite Server.app (versie 4.x) zeker het geval. Omdat de nieuwe Server.app (versie 5.x) gebruik maakt van een reverse proxy, worden de automatisch gegenereerde url’s, links en graphics steeds http links in plaats van https links. De button die op mijn https login pagina staat verwijst bijvoorbeeld naar een http link. Er zijn natuurlijk wel quick en dirty work arounds te bedenken, maar ik zoek inderdaad naar een manier om dit niet hardcoded overal aan te passen. Om je een voorbeeld te geven. phpMyAdmin werkte ook niet meer met de nieuwe Server.app, maar door daar een webroot variabele (met daarin het https address) toe te voegen aan de config file, werkte alles weer perfect. Ik zoek naar een soortgelijke oplossing voor Laravel.

        Groeten Marty

        Reply
      • Marty van de Korput
        Marty van de Korput says:

        Hey Floris,

        Inmiddels is het probleem opgelost en wilde ik hier voor de volledigheid de oplossing even posten :-).

        Je kunt in Laravel een Middleware klasse aanmaken. Standaard heeft zo’n Middleware klasse één functie: handle(). Hier kun je de volgende code gebruiken, de eerste regel is specifiek voor het gebruik met een proxy.

        public function handle($request, Closure $next)
        {
        Request::setTrustedProxies([$request->getClientIp()]);

        if (!$request->isSecure()) {
        return redirect()->secure($request->getRequestUri());
        }

        return $next($request);
        }

        Deze klasse kun je bijvoorbeeld ForceSLL noemen (de naam is niet belangrijk) en deze toevoegen aan de array $middleware in het bestand Kernel.php. Zo wordt deze klasse over de gehele applicatie toegepast. Inmiddels zijn alle gegeneerde links en url’s weer allemaal mooi https.

        Mogelijk dat het iemand verder kan helpen.

        Groeten Marty

        Reply

Trackbacks & Pingbacks

  1. […] 2015: OS X update & Laravel […]

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply