我正在尝试运行简单的Hello World PHP扩展,但在make&安装扩展,当我想运行测试脚本时,我遇到以下问题:
P Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/skeleton.so' - /usr/lib/php5/20121212/skeleton.so: undefined symbol: _ZN3Php9ExtensionD1Ev in Unknown on line 0
/etc/php5/cli/conf.d/skeleton.ini
我的main.cpp
文件:
#include <phpcpp.h>
#include <iostream>
void helloWorld (Php::Parameters ¶ms)
{
std::string name=params[0];
std::cout<<"Hello "<<name<<"!"<<std::endl;
}
extern "C" {
PHPCPP_EXPORT void *get_module()
{
static Php::Extension extension("skeleton", "1.0");
extension.add("helloWorld", helloWorld);
return extension;
}
}
这是我的测试脚本:
<?php
echo helloWorld('Ben');
我受到本教程的启发:http://www.sitepoint.com/getting-started-php-extension-development-via-php-cpp/
你可以帮我这个吗?在此先感谢您的帮助。答案 0 :(得分:0)
我不确定这是不是问题,但您应该使用:
Php::out << "Hello " << name << "!" << std::endl;
而不是
std::cout << "Hello " << name << "!" << std::endl;
std :: cout 会在我的扩展程序中产生一些错误。
维尼
答案 1 :(得分:0)
直到我在PHP-CPP的回复中看到这张票,我才得到同样的错误:https://github.com/CopernicaMarketingSoftware/PHP-CPP/issues/180
原来我的问题是我跟随别人的建议我应该用PHP的内容替换/zend/
dir(在PHP-CPP lib中)的内容代码(我从php.net获得)。
一旦我回滚/zend/
的内容与PHP-CPP提供的内容相同,问题就消失了。