无法执行简单的Hello World PHP扩展

时间:2014-12-31 10:14:19

标签: php c++ php-extension php-cpp

我正在尝试运行简单的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 &params)
{
    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/

你可以帮我这个吗?在此先感谢您的帮助。

2 个答案:

答案 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提供的内容相同,问题就消失了。