執行上面的命令建立擴張開發的框架,這是你會發現ext文件夾下面多了一個叫helloworld的文件夾,同時命令行也輸出了一些文本,
會提示你生成擴展的大致步驟。
step 4. 進入php源碼的根目錄, 編輯文件 vim ext/helloworld/config.m4
去掉這個文件中的幾行注釋大致會在第16-19行之間,具體版本也許不一樣之後保存文件(:wq)
step 5. 在php源碼根目錄執行命令 ./buildconf --force
step 6. 在php源碼的根目錄編譯php程序,注意命令為 ./configure --with-helloworld
最後出現的error,沒有處理
step 7. 進入我們的擴展目錄helloworld,執行命令 phpize(通過 sudo apt-get install php5-dev 安裝 phpize),此時你的擴展目錄會生成很多文件,可以用於後期編譯。
step 8.在helloworld目錄編譯我們的擴展 ./configure --with-php-config=/usr/bin/php-config(使用你自己環境的php-config) --enable-helloworld
你可以通過一條命令查找你的php-config文件的位置(find / -name php-config)如圖:我的地址為/usr/bin/php-config
step 9 .進入擴展helloworld目錄,編輯文件php_helloworld.h,在最後一行添加函數 PHP_FUNCTION(helloworldTest);
helloworldTest 可以改成你喜歡的名字,之後保存退出
step 10. 用vim 打開helloword.c,在helloworld.c中實現我們的函數,之後 將helloworldTest函數加入到helloworld_functions[]中,保存退出
step 11.執行make命令 make 編譯擴展,我在運行的過程中還是比較順利的。如果出現錯誤,請認真看前面步驟是否有錯,我在第一遍做的時候也有錯一般都是前面步驟有問題。
step12.將編譯生成的helloworld.so 文件復制到你本機的php擴展目錄
擴展目錄可以通過 php -r phpinfo(); | grep extension_dir 查看本機php的擴展路徑
step 13.配置php.ini 開啟 helloworld.so 擴展
查看php.ini 的位置(php -r phpinfo(); | grep php.ini )
vim 打開 php.ini 文件 sudo vim /etc/php5/cli/php.ini
在文件最後添加擴展 (extension=helloworld.so)
通過 php -r phpinfo(); | grep helloworld 測試
step 14 .測試擴展(php -r echo helloworldTest();)
在這個過程中我曾按照原作者的步驟去嘗試,結果會出現一個錯誤
經過調試,時原作者在helloworld.c 文件中添加到helloworld_functions[] 時將 PHP_FE_END 換成了 {null,null,null} 而自己再編譯的時候並沒有出錯卻也給PHP_FE_END注釋 了,修改之後,重新編譯,復制就可以了。