Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > Как создать своё расширение для php?


Автор: kanaris 8.1.2011, 17:36
Добрый вечер!

Интересует возможность создания расширения для пхп (*.so) из обычного php-файла. С целью сокрытия исходного кода, и, возможно, ускорения работы.
Читал статейку: http://habrahabr.ru/blogs/php/98862/ там сильно сложно, функцию нужно писать на си. В си я не разбираюсь, кроме того конвертировать в си десятки тысяч строк пхп-кода нереально.
Есть ли такие компиляторы, которые дают эту возможность?

Автор: SamDark 8.1.2011, 19:25
kanaris
Нет.

Автор: vasac 8.1.2011, 21:31
kanaris, а как распространять будете? В виде *.so, которая на большинстве никсов не заработает?

Автор: kanaris 8.1.2011, 22:50
Цитата

а как распространять будете? В виде *.so, которая на большинстве никсов не заработает? 


Не буду никак распространять, это будет на моем сервере. Будет отключены некоторые расширения (типа mysql, работа с файлами), но зато включено мое расширение. Получится как фреймворк, только из ограниченных функций. Будут наниматься фрилансеры, кодить модули, используя только функции фреймворка: а их будет достаточно для полноценной разработки сайта.
Получится масса преимуществ:
  • самая главная цель: фрилансеры не смогут скачать ядро движка (юзать для себя), но смогут кодить нужные моды.
  • нельзя залить шелл (не будет работать, т.к. отключено большинство функций, которые использует шелл, типа file_get_contents())
  • нельзя будет оставить в коде лазейки (для тайного инклуда скриптов, бэкдор, ...), т.к. из скрипта будет доступно только окружение, которое и так доступно пользователю (напр. нельзя задампить базу, сделать выборку всех паролей из базы).

Имхо задумка идеальна, однако пока что не могу найти подходящего решения для этого. Или может предложите альтернативное что-нибудь?

Автор: skyboy 9.1.2011, 00:25
Цитата(kanaris @  8.1.2011,  21:50 Найти цитируемый пост)
Будет отключены некоторые расширения (типа mysql, работа с файлами),

а твой модуль будет как-то использовать функции отключенных тобой модулей mysql и прочих напрямую? и что это за модуль "работы с файлами"? работа с ФС реализована в "ядре" РНР, хочешь отключить - только через php.ini.

Автор: kanaris 9.1.2011, 00:48
Цитата

а твой модуль будет как-то использовать функции отключенных тобой модулей mysql и прочих напрямую?


Само расширение должно иметь полный доступ ко всем функциям.
Но в самих php-файлах, которые будут создавать фрилансеры, будут доступны только функции из расширения и стандартные "безопасные" php-функции (типа str_replace, preg_match, in_array и тд). А "опасные" функции типа mysql_query(), fwrite() будут недоступны.


Цитата

и что это за модуль "работы с файлами"? работа с ФС реализована в "ядре" РНР, хочешь отключить - только через php.ini.


значит отключить через php.ini

Автор: kanaris 9.1.2011, 20:48
что, никто не знает?

Автор: skyboy 10.1.2011, 09:58
Цитата(kanaris @  9.1.2011,  19:48 Найти цитируемый пост)
что, никто не знает? 

Цитата(SamDark @  8.1.2011,  18:25 Найти цитируемый пост)
kanaris, 
Нет. 

пиши на С++

Автор: kanaris 12.1.2011, 15:38
Ну может быть не обязательно через пхп-расширения.
Основная задача: отключить некоторые системные функции, НО разрешить свои функции, использующие те отключенные системные.
Буду очень рад, если подскажете что-нибудь подобное или наводящее.

Автор: phpsc 13.1.2011, 05:32
демоны на c++
сайт на php

Автор: lukas 18.1.2011, 20:14
Есть расширение phptk для freepascal с помощью которого можно писать расширения для php: http://wiki.freepascal.org/Pascal_and_PHP

.so я не писал расширения, но .dll написал с десяток для php 5.2. Но freepascal позволяет писать для линукса, так что поддержка и варианта .so должна быть. 

P.S. Есть еще phc, который транслирует код php в расширение написанное на си для php.

Автор: KLeonid 4.4.2011, 18:39
На сколько я понимаю, вам не нужно расширение. Вам нужно просто защитить код ядра.
Для этого лучше использовать, например, SVN. Фрилансерам дается ваш АПИ, и логин в SVN репозиторий, в котором они будут видеть только свои части кода. Все остальное будет скрыто от их глаз smile.
Это правильный, используемый в профессиональной разработке метод.
А скомпилированные модули нужны для ускорения работы "тяжелых" для PHP модулей (парсинг, работа с БД или графикой...).

Автор: Antonsaer 24.8.2011, 18:30
http://nezamerzay-ka.ru/staty/41.htm а можно подробнее про свн 

Автор: krundetz 29.8.2011, 15:03
kanaris, глянте в сторону разработки HipHop for PHP от facebook 

Автор: krundetz 29.8.2011, 15:24
KLeonid, мне кажется предложенный вами способ легко обхдиться

Автор: Absinthe 29.8.2011, 22:18
Не вижу смысла в задаче ТС.
Скорее всего ему поможет ioncube/etc.
И изучить C в любом слуае не помешает, если в будущем захочешь серьезно заниматься PHP.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)