Я пытаюсь запустить простое 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 ¶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/
Не могли бы вы помочь мне с этим? Заранее спасибо за помощь.
Я не уверен, если это проблема, но вы должны использовать:
Php::out << "Hello " << name << "!" << std::endl;
вместо
std::cout << "Hello " << name << "!" << std::endl;
станд :: соиЬ выдает некоторые ошибки в моих расширениях.
Виниций
Я получал ту же ошибку, пока не увидел этот билет в репозитории PHP-CPP: https://github.com/CopernicaMarketingSoftware/PHP-CPP/issues/180
Оказывается, моя проблема заключалась в том, что я следовал чужому совету заменить содержимое /zend/
dir (в библиотеке PHP-CPP) с содержимым исходного кода PHP (который я получил с php.net).
Однажды я откатил содержимое /zend/
чтобы быть таким же, как PHP-CPP, проблема исчезла.