Небольшой патчинг php_templates-1.7.2

Не компилится с ошибками:

/home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_pre_parse':
 /home/vadim/build/templates/tmpl_lib.c:217: error: lvalue required as left operand of assignment
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_set':
 /home/vadim/build/templates/tmpl_lib.c:446: warning: comparison of distinct pointer types lacks a cast
 /home/vadim/build/templates/tmpl_lib.c:447: warning: comparison of distinct pointer types lacks a cast
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_parse':
 /home/vadim/build/templates/tmpl_lib.c:700: error: lvalue required as left operand of assignment
 /home/vadim/build/templates/tmpl_lib.c: In function 'php_tmpl_load_structure':
 /home/vadim/build/templates/tmpl_lib.c:880: error: lvalue required as left operand of assignment


Патчик:

--- ./templates.orig/tmpl_lib.c 2011-06-17 00:39:42.312591830 +0400
+++ ./templates/tmpl_lib.c      2011-06-17 00:40:32.342594981 +0400
@@ -214,7 +214,7 @@
        buf_alloc = TMPL_MAX_TAG_LEN+4;
        buf = (uchar*)emalloc(buf_alloc);
        /* Searching algorythm will require larger buffer */
-       ZV(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
+       Z_STRVAL_P(tmpl->original) = (char*)erealloc(ZV(tmpl->original),
                ZL(tmpl->original) + MAX(
                        ZL(tmpl->tag_left), MAX(
                                ZL(tmpl->tag_right), MAX(
@@ -697,7 +697,7 @@
                                        /* Make a recursive call */
                                        if(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) {
                                                while(buf_alloc <= (unsigned)(ZL(path)+1+ZL(tag->name)+1)) buf_alloc <<= 1;
-                                               ZV(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
+                                               Z_STRVAL_P(new_path) = (char*)erealloc(ZV(new_path), buf_alloc);
                                        }
                                        sprintf(ZV(new_path), (1 == ZL(path) && '/' == ZV(path)[0]) ? "%s%s" : "%s/%s", ZV(path), ZV(tag->name));
                                        ZL(new_path) = ZL(path) + ZL(tag->name) + ((1 == ZL(path) && '/' == ZV(path)[0]) ? 0 : 1);
@@ -877,7 +877,10 @@
                        } else p = key;
                        ZVAL_STRINGL(new_value, p, (TMPL_LONG == mod) ? key_len-1 : key_len-1-(p-key), 1);
                        if((TMPL_TAG | TMPL_CONTEXT) == mask && TMPL_CONTEXT == tag->typ) {
-                               ZV(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+                               Z_STRVAL_P(new_value) = (char*)erealloc(ZV(new_value), ZL(new_value)+2);
+
+
+
                                memcpy(ZV(new_value)+ZL(new_value), "/", 2);
                                ZL(new_value) += 1;
                        }


vadim.flightmedia.ru/blog/2011/06/16/небольшой-патчинг-php_templates-1-7-2/

Установка модуля PHP templates.so на Debian Lenny x86

К сожалению под Debian x64 нет модуля, только под Debian x32. Но если вы попробуете поставить, то он у вас будет выдавать при компиляции make ошибки.

php templates.so

А если попробуете скопировать модуль с x32 на x64 то будет ошибка. Непомню как нызавается она, но чтото о несовместимости системы говорит.

Читать дальше →

Установка модуля PHP templates.so на Debian Lenny x86

Установка модулей

Допустим, модуль называется php-templates.
Сначала создадим папку для установки:
mkdir ~/php


Установка через PECL

Достаточно ввести следующую команду:
pecl install --installroot=~/php php-templates


Однако, этот способ не всегда работает, и в таких случаях приходится устанавливать «вручную»:

Установка «вручную»



# Скачиваем архив с модулем и распаковываем
#wget http://space.dl.sourceforge.net/project/php-templates/php-templates/1.7/php_templates-1.7.2.tar.gz
#tar -cvzf php_templates-1.7.2.tar.gz


# Заходим в распакованную папку:
cd templates


# Если нет других указаний, устанавливаем модуль стандартным для PHP образом:
#phpize
#./configure --enable-templates=shared
#make
#make install


Если у вас нет phpize
то придется поставить:
#apt-get install php5-dev 


Получаем скомпилированный модуль:
root@localhost:~/templates# ls -l ./modules/templates.so
-rw-r--r-- 1 root root 107068 2011-01-23 ./modules/templates.so


Этот модуль копируем в папку где хранятся модули по умолчанию:
cp ./modules/templates.so /usr/lib/php5/20060613+lfs


Далее идем в ISPmanager IP-server/manager/ispmgr
В раздел "Расширения PHP"
php templates.so

Если ISPmanager не видит наш модуль, то перезагружаем его
#service restart httpd
#killall -9 ispmgr


Выбираем наш модуль templates.so и нажимаем на лампочку для активации модуля.

php templates.so