Archiv der Kategorie: PHP

xdebug mit Vagrant und PHPStorm funktioniert nicht unter OS X

Webentwicklung mit xdebug und vagrant ist eine feine Sache, wenn das debuggen denn funktioniert. Manchmal kann es sein dass xdebug aus dem vagrant client den Port 9000 des Hosts z.B. unter OS X nicht aufrufen kann.

Normalerweise sollte auf der Konsole des Hosts, in meinem Fall OS X, mit dem Befehl lsof -i tcp:9000 am Port 9000 PHPStorm lauschen.

$ sudo lsof -i tcp:9000
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
phpstorm 3023  csg  298u  IPv4 0x4a2aff906abe6a2b      0t0  TCP *:cslistener (LISTEN)
Dort aber waren drei (?) php-fpm Prozesse die den Port 9000 für sich beschlagnahmt haben…
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
php-fpm 1155  csg    6u  IPv4 0x4a2aff9067aa1133      0t0  TCP localhost:cslistener (LISTEN)
php-fpm 1186  csg    0u  IPv4 0x4a2aff9067aa1133      0t0  TCP localhost:cslistener (LISTEN)
php-fpm 1187  csg    0u  IPv4 0x4a2aff9067aa1133      0t0  TCP localhost:cslistener (LISTEN)

Leider konnte ich nicht genau nachvollziehen woher diese kamen. Ich hab diese beendet und PHPStorm konnte wieder erfolgreich seinen Dienst aufnehmen.

Evtl. waren diese von OS X selbst? Oder lags am MAMP Pro der hin und wieder zum Einsatz kommt?

ZF2: Custom View Helper in Zend Framework 2 mit ZfcTwig

Notizen zum erstellen eines Custom View Helpers in Zend 2.

View Helper PHP Datei z.B. unter ../Application/src/Application/View/Helper/TestHelper.php anlegen:

<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
 
class TestHelper extends AbstractHelper
{
    public function __invoke($str, $find)
    {
        if (! is_string($str)){
            return '<!--must be string-->';
        }
 
        if (strpos($str, $find) === false){
            return '<!--not found-->';
        }
 
        return '<!--found-->';
    }
}

Diesen Helper dann im Config-Array im Modul registrieren unter ../module/Application/config/module.config.php. Dieses entweder erweitern/ergänzen bzw. erstellen.

<?php
return array(

    //...
    //...

    'view_helpers' => array(
        'invokables' => array(
            'foo' => 'Application\View\Helper\TestHelper'
        ),
    ),

    //...
    //...

);

Im Twig Template mit installiertem ZfcTwig kann dieser dann wie folgt aufgerufen werden.

{{ foo('meee', 'e') }}

Beziehungsweise innerhalb des Standardtemplate mit:

<?php echo $this->foo('meee', 'e'); ?>

 

Phalcon: Phalcon mit Vagrant und Virtualbox auf OS X

Hier beschreibe ich kurz wie man den Phalcon in einer Vagrantbox unter Max OS X zum fliegen bekommt. Im ersten Schritt müssen Virtualbox und Vagrant installieren werden.

Dann legt man sich einen Ordner an in dem man die Vagrantbox starten will, z.B. /Users/MEINUSERNAME/Vagrant/phalcon/.

Anschließend in diesen Ordner wechseln und folgende Zeile von der Phalcon Seite eingeben:

vagrant init phalconbox https://s3-eu-west-1.amazonaws.com/phalcon/phalcon125-apache2-php54-mysql55.box

Nach diesem Befehlt ist in dem Ordner eine Datei „Vagrantfile“ zu finden. In dieser muss diese Zeile einkommentiert werden.

config.vm.network "forwarded_port", guest: 80, host: 8080

Wer noch weiter in Vagrant abtauchen will kann hier noch weitere Einstellungen vornehmen. Dazu aber später noch mehr. Nun starten wir die VM mit:

vagrant up

Beim ersten Aufruf kann dies ein wenig länger dauern da die VM komplett neu installiert wird. Aktuell wird Ubuntu 12.04, Apache 2.2, Phalcon 1.2.5, PHP 5.4.23, MySQL 5.5 dort installiert.

Am Ende sollte nun dies in der Konsole zu sehen sein.

==> default: Machine booted and ready!

Gibt man nun im Terminal vagrant ssh ein ist man per ssh auf der Konsole in der VM angemeldet. Im Browser ist die VM unter http://localhost:8080 zu erreichen. Wenn dies auf Anhieb klappt kann der nächste Befehl übersprungen werden, falls die Seite nicht erreichbar ist muss dieser ausgeführt werden um die Firewall für Vagrant freizuschalten.

sudo ipfw add 80 fwd 127.0.0.1,8080 tcp from any to me 80

Nach der Eingabe von http://localhost:8080/info.php sollte die Liste von phpinfo() erscheinen. Desweiteren sind noch zwei weitere kleine Demo Applikationen in /var/www zu finden.

phalcon-localhost-8080

Wichtig ist auch dass der aktuelle Ordner in dem die Vagrant VM gestartet wurde, ein Shared Folder ist der  in der VM unter dem Ordner vagrant im Rootverzeichnis liegt. Als letztes Schmankerl könnte man im Vagrantfile den Sharedfolder auf /var/www konfigurieren. Die Dateien können lokal am Host bearbeitet werden. In der VM liegen diese in /var/www und werden vom Webserver ausgeliefert. Im Vagrantfile kann dies wie folgt aussehen:

  config.vm.synced_folder "./", "/var/www"

Anbei ein kleiner Beweisscreenshot dass es funktioniert. Die Ausgabe ist die gleiche wie im Screenshot oberhalb.

vagrant-shared-folder-var-www

Mit vagrant suspend kann die VM beendet und mit vagrant reload  neu gestartet werden.

Mit Vagrant stehen sicher noch weitere Möglichkeiten zur Verfügung, aber fürs erste sollte dieses Setup als Entwicklungsumgebung für Phalcon unter OS X ausreichen.

PHP: OS X und PHP 5.3, 5.4, 5.5

Was für ein Traum! Diese Seite ist wirklich Gold wert, denn dort sind binary packages zur Installation von diversen PHP Versionen (5.3, 5.4, 5.5) für Mac OS X vorhanden. Die Installation ist Mega einfach.

Diverse goodies sind mit installiert, x-debug usw. Die Dokumentation beantwortet die wichtigsten Fragen wie z.B.

# wo befindet sich die php.ini
/usr/local/php5/php.d/99-liip-developer.ini

# wo wird xdebug konfiguriert
/usr/local/php5/php.d/50-extension-xdebug.ini