C ++ — Простое PHP-расширение Hello World не может быть выполнено

Я пытаюсь запустить простое PHP-расширение Hello World, но после 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/

Не могли бы вы помочь мне с этим? Заранее спасибо за помощь.

3

Решение

Я не уверен, если это проблема, но вы должны использовать:

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

вместо

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

станд :: соиЬ выдает некоторые ошибки в моих расширениях.

Виниций

0

Другие решения

Я получал ту же ошибку, пока не увидел этот билет в репозитории PHP-CPP: https://github.com/CopernicaMarketingSoftware/PHP-CPP/issues/180

Оказывается, моя проблема заключалась в том, что я следовал чужому совету заменить содержимое /zend/ dir (в библиотеке PHP-CPP) с содержимым исходного кода PHP (который я получил с php.net).

Однажды я откатил содержимое /zend/ чтобы быть таким же, как PHP-CPP, проблема исчезла.

0

По вопросам рекламы [email protected]