3

我正在尝试运行简单的 Hello World PHP 扩展,但是在制作和安装扩展之后,当我想运行测试脚本时,我遇到了以下问题:

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/

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

4

2 回答 2

1

我不确定这是否是问题,但您应该使用:

Php::out << "Hello " << name << "!" << std::endl;

代替

std::cout << "Hello " << name << "!" << std::endl;

std::cout在我的扩展中产生了一些错误。

维尼修斯

于 2014-12-31T20:18:52.230 回答
0

在我在 PHP-CPP 的 repo 上看到这张票之前,我遇到了同样的错误:https ://github.com/CopernicaMarketingSoftware/PHP-CPP/issues/180

原来我的问题是我听从了别人的建议,我应该用/zend/PHP 源代码的内容(我从 php.net 获得)替换 dir 的内容(在 PHP-CPP 库中)。

一旦我将内容回滚/zend/到与 PHP-CPP 提供的内容相同,问题就消失了。

于 2016-01-28T14:47:51.913 回答