Пишем своё расширение PHP на C. Часть 1: Linux

Очень часто бывает так, что встроенного в PHP набора функций недостаточно, или алгоритм выполняется слишком долго. Также возможен случай, когда надо запрограммировать какой-нибудь уникальный алгоритм. Тогда одним из вариантов будет написание собственного расширения для PHP.Эту статью я разделил на две части. Первая будет посвящена компилированию своего расширения на платформе Linux, а вторая компилированию на Windows. Мы будем делать простое расширение, которое добавляет одну функцию hello_world(), которая выводит сообщение “Hello extension loaded succesfull!”.

Тут некоторые наверное спросят, а зачем всё это делать, ведь в интернете полно руководств, как писать своё расширение. Так то оно так, но ни один из этих мануалов в конечном счёте не помог мне его скомпилить. Так что выкладываю здесб работающую (на данный момент) последовательность.

Бинарные библиотеки данного расширенимя скомпилированы под php 5.2.x
Под php 5.3.x работать не будет. Скорее всего необходима перекомпиляция вместе с бинарниками и исходниками соответствующей версии php на целевой платформе.

Для удобства я написал скриптик, который сам компилит исходники библиотеки, так что не буду расписывать алгоритм по шагам, а просто выложу исходники. В конце статьи вы найдёте архив со всеми файлами.

compile.sh

config.m4

php_hello.c

php_hello.h

Исходники

Архив с исходниками под Linux

2 Comments

  1. open suse, php 5.4.6
    при make вываливается в

    /var/packages/php-5.4.6/ext/hello/hello.c:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘hello_functions’
    /var/packages/php-5.4.6/ext/hello/hello.c:18: error: ‘hello_functions’ undeclared here (not in a function)
    make: *** [hello.lo] Error 1

Leave a Comment