高速开发一个PHP扩展(SO组件)教程
快速开发一个PHP扩展(SO组件)教程
本文通过非常快速的方式讲解了如何制作一个PHP 5.2 环境的扩展(PHP Extension),希望能够在图文的方式下让想快速学习的朋友了解一下制作过程。
需求:比如开发一个叫做 lanhaicode 的扩展,扩展里就一个函数 lanhai_test(),输入一个字符串,函数返回:Your input string: xxxxx。
要求:了解C/C++编程,熟悉PHP编程
环境:下载一份php对应版本的源码,我这里是 php-5.2.17,先正常安装php,假设我们的php安装在 /usr/local/php 目录,源码在 /root/soft/php/php-5.2.17/,现在开始!
php-5.2.17下载地址:
http://blog.lrenwang.com/down/soft/php-5.2.17.tar.bz2
解压: tar -vxjf php-5......tar.bz2
步骤一:生成扩展框架
cd /root/soft/php/php-5.2.17/ext ./ext_skel --extname=lanhaicode cd /root/soft/php/php-5.2.17/ext/lanhaicode vi config.m4
打开文件后去掉 dnl ,获得下面的信息:
PHP_ARG_ENABLE(lanhaicode, whether to enable lanhaicode support, [ --enable-lanhaicode Enable lanhaicode support])
保存退出.
第二步:编写代码
vi php_lanhaicode.h
找到:PHP_FUNCTION(confirm_lanhaicode_compiled); 新增一行:
PHP_FUNCTION(lanhai_test);
保存退出。
vi lanhaicode.c
数组里增加我们的函数,找到 zend_function_entry lanhaicode_functions[],增加:
PHP_FE(lanhaicode, NULL)
再到 lanhaicode.c 文件最后面增加如下代码:
PHP_FUNCTION(lanhai_test) { char *arg = NULL; int arg_len, len; char *strg; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } len = spprintf(&strg, 0, "Your input string: %s\n", arg); RETURN_STRINGL(strg, len, 0); }
保存退出。
第三步:编译安装
cd /root/soft/php/php-5.2.17/ext/lanhaicode /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make make test make install
./configure过程中出现如下错误:
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
解决办法:安装GCC软件套件,执行命令:
yum install -y gcc
现在看看是不是有个 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/lanhaicode.so
编辑php.ini,把扩展加入进去:
vi /usr/local/php/lib/php.ini
在[PHP]模块下增加:
extension = lanhaicode.so
保存退出。
注意:如果你不存在扩展文件目录,或者安装报错,那么可以自行建立这个目录,然后把扩展拷贝到目录下,然后记得把 php.ini 文件中的 extension_dir 修改为该目录:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
第四步:检查安装结果
现在看看模块加载了没有:
/usr/local/php/bin/php -m,应该会打印出:
[PHP Modules]
...
lanhaicode
...
[Zend Modules]
然后重启apache,输出 phpinfo() ,应该能够看到:
lanhaicode
lanhaicode support enabled
看看函数是否存在并且调用,在web目录下建立:lanhaicode.php
<?php echo "<pre class="brush:php;toolbar:false">"; print_r(get_loaded_extensions()); print_r(get_extension_funcs('lanhaicode')); echo lanhai_test('My first php extension'); echo "

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.
