我自己用C++写的一个PHP扩展,编译安装好之后,问题来了,请君听我慢慢道来。
1,为了测试,我写了个测试脚本ctp.php
<?phpecho "hello this is a test ctp extension!<br>";if(function_exists("helloWorld")){echo "exist\n";}else{echo "none exist\n";}echo helloWorld('baren')
我只知道php运行cli模式下用的配置文件和执行web用的配置文件是不一样的,你应该将你的扩展也添加到运行web的那个配置文件里面
web用的是/usr/local/php/etc/php.ini这个配置文件
cli应该是这个/etc/php.ini
感谢你的回答,不过你的回答是错的。
你的错误如下:
1,CLI 和WEB的配置文件都是一样的。而且我在做部署时只是将我的扩展配置文件ctpextension.ini放在了Scan this dir for additional .ini files 默认的目录下面 :/usr/local/php/php.d 当PHP加载配置文件时会自动检查这个目录并把ctpextension.ini 文件里的内容追加到php,ini里面。
2,你说:“cli应该是这个/etc/php.ini” 我也发现我的系统里有这个文件目录,于是我把这个文件删除 ,然后在命令行运行脚本同样能够得到结果。证明你的说法有误。
关于 additional .ini files 你可以阅读这里: http://php.net/manual/zh/function.php-ini-scanned-files.php
命令行是实时加载php的,而web不是,修改php配置如加扩展后,需要重启服务器才能生效。
命令行是实时加载php的,而web不是,修改php配置如加扩展后,需要重启服务器才能生效。
大家不要再猜测了,这个问题我请教一个国外的开发者解决了。
其实这个问题跟配置没有关系,我的配置是正确的,不然就不会在命令行跟浏览器端都显示我的函数已经存在。
问题的原因是:我自己写的PHP扩展库依赖的第三方库已经更行了,而我不知情,还是看得老版本的文档,
所以就出现浏览器不输出结果的问题。
我只需要把我的C++文件里面的std::cout 改成Php::out 即可
给大家看看我期待已久的结果图吧