接着上一步的工作~
四. 编译工程
4.1 cmake搭建工程
$ cd /home/lw/桌面/phpmf
$ mkdir Release
$ cd Release
$ cmake -D CMAKE_BUILD_TYPE=release -D php_path=/home/lw/桌面/php/php-7.0.20/main .. //注意php_path要根据自己php源码位置而定
configure成功,进入下一步 ;
4.2 编译
$ make
$ cd ../bin
$ ls
可以在bin目录下 ,看到: mfTest
、 libmf.so
、 libphp_mf.so
三个文件, 第一个是命令行测试程序,第二个是算法核心接口动态链接库,位置最好不要动,第三个libphp_mf.so
就是要加到php的扩展动态库目录下的文件。
4.3 拷贝php扩展
$ sudo cp libphp_mf.so /usr/local/php-7.0.20/lib/php/extensions/no-debug-zts-20151012/
4.4 修改php.ini
注意php扩展目录下(/usr/local/php-7.0.20/etc/)一开始是没有php.ini文件的,我们需要从php源码目录中(/home/lw/桌面/php/php-7.0.20/php.ini-development) copy一份过去并重命名,然后编辑它。
$ cd /usr/local/php-7.0.20/etc/
$ sudo cp /home/lw/桌面/php/php-7.0.20/php.ini-development ./
$ sudo cp php.ini-development php.ini
$ sudo gedit php.ini
修改内容如下:
extension_dir = "/usr/local/php-7.0.20/lib/php/extensions/no-debug-zts-20151012"
并在有很多 extension=xxx.dll 的地方添加(注意要去掉注释标记 —分号):
extension=libphp_mf.so
至此全部配置完成!
五.测试
在/var/www/html
目录下新建 mftest.php
$ gksudo gedit /var/www/html/mftest.php
内容如下:
<?php
$result = mf_my_train("/home/lw/openSource/real_matrix.tr.txt","/var/www/html/model.txt");
echo $result;
?>
重启apache2
$ sudo service apache2 start
调用mftest.php
浏览器地址栏输:http://localhost/mftest.php 或http://127.0.1.1/mftest.php
浏览器端打印: 1
如果调用成功应该返回 0 并且显示 train successfully
分析函数输出,为1说明读取本地路径失败,考虑apache2 的权限问题,为 /var/www/html 加入到apache2 的默认用户组www-data下;
$ sudo chown -R www-data:www-data /var/www/html
再次重启apache2
$ sudo service apache2 start
调用mftest.php
浏览器显示:
好啦~以上就是采用cmake方式开发php扩展的全部内容~~
后续还会添加关于推荐系统中大火的pmf方法以及更多关于libmf的内容~