PHP-Modul mit C++

Wer selbst ein PHP-Modul schreibt und darin C++ benutzen möchte muss einige Kleinigkeiten beachten die leider nicht besonders gut dokumentiert sind. Im folgenden stelle ich exemplarisch alles zusammen was ich während der Erstellung des PHP-Moduls gorgeous lernen durfte.

Nachdem man mit Hilfe des Skripts ext_skel ein Grundgerüst für ein PHP-Modul erstellt und es mit einigen Funktionen bestückt hat, muss die config.m4 angepasst werden:

PHP_ARG_ENABLE(gorgeous, whether to enable gorgeous support,
[  --enable-gorgeous           Include gorgeous support])

if test "$PHP_gorgeous" != "no"; then
  PHP_REQUIRE_CXX
  PHP_SUBST( GORGEOUS_SHARED_LIBADD )
  PHP_ADD_LIBRARY( stdc++, 1, GORGEOUS_SHARED_LIBADD )
  PHP_NEW_EXTENSION( gorgeous, gorgeous.cpp, $ext_shared,,, 1 )
if

Um das Modul in den PHP-Sourcetree zu integrieren:

rm -rf automate.cache
./buildconf --force

Nun kann PHP konfiguriert und das Modul übersetzt werden:

./configure \
  --disable-all \
  --enable-shared \
  --with-gorgeous=shared
make

Ob das Modul korrekt eingebunden werden kann testet man mit:

php -i -n \
  -d extension_dir=`pwd`/modules/ \
  -d extension=gorgeous.so