今天終於把C擴充加入到PHP中了,並且可以調用,廢話就不說了,看下文。
一、必須先要安裝Apache和mysql,這兩個的安裝過程我就不說了。
二、安裝PHP
#mkdir /usr/local/php5
#./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/lib64/mysql --with-config-file-path=/usr/local/php5
#make
#make install
三、查看php是否安裝成功
在apache的htdocs裡建立一個檔案名稱為:index.php
寫入內容 <?phpinfo()?>
儲存
瀏覽http://localhost/index.php
顯示正確,安裝成功。
四、建立自己的c php擴充
進入到php的安裝包的ext目錄下
#cd /usr/software/php5-3.2/ext
#./ext_skel --extname=mysqlc 注意:這裡是建立裡擴充庫的名字,建立後,會在ext下有一個mysqlc的目錄
#cd mysqlc
五、進行擴充庫的基礎修改和編碼操作
#vi config.m4
原始
dnl PHP_ARG_ENABLE(mysqlc, whether to enable mysqlc support,
dnl Make sure that the comment is aligned:
dnl [ --enable-mysqlc Enable mysqlc support])
修改後的
PHP_ARG_ENABLE(mysqlc, whether to enable mysqlc support,
Make sure that the comment is aligned:
[ --enable-mysqlc Enable mysqlc support])
#vi mysqlc.c
在PHP_FUNCTION(confirm_mysqlc_compiled)函數下面追加
PHP_FUNCTION(mysqlc){
zend_printf("helloword c!!");
}
修改前
const zend_function_entry mysqlc_functions[] = {
PHP_FE(confirm_mysqlc_compiled, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in mysqlc_functions[] */
};
修改後
const zend_function_entry mysqlc_functions[] = {
PHP_FE(confirm_mysqlc_compiled, NULL) /* For testing, remove later. */
PHP_FE(mysqlc,NULL)
{NULL, NULL, NULL} /* Must be the last line in mysqlc_functions[] */
};
#vi php_mysqlc.h
在PHP_FUNCTION(confirm_mysqlc_compiled);下面追加
PHP_FUNCTION(mysqlc);
到這裡,基本上你的擴充庫就寫完了,下面就要開始進行產生和安裝了
五、產生擴充庫
目前的目錄在/usr/software/php5-3.2/ext/mysqlc
#/usr/local/php5/bin/phpize
#./configure --with-php-config=/usr/local/php5/bin/php-config
#make
#make install
執行完畢後,將會在/usr/local/php5/lib/php/extensions/no-debug-non-zts-版本號碼/mysqlc.so檔案
把mysqlc.so檔案複製到apache下的modules去
四、進行配置php.ini
然後進入到/usr/local/php5看有沒有php.ini,
如果沒有,複製安裝包裡的php.ini-production改名為php.ini
進入php.ini設定
1、short_open_tag = On
2、extension_dir = "/usr/local/apache2/modules/"
3、追加一個extension=mysqlc.so
儲存php.ini,重啟apache
OK,擴充庫可以使用了