Форум → Программирование → PHP для идиотов → Расширения PHP → самописное расширение на C++
самописное расширение на C++
Страницы: ← Следующая страница →
-
Привет всем!
Пытаюсь создать и использовать тестовый модуль по этому мануалу
http://devzone.zend.com/article/4486
Должен получиться установленный php-модуль, использующий самописную библиотеку на С++
в итоге модуль у меня устанавливается, а при загрузке в браузер тестика
// create a 5 gear car
$car = new Car(5);
print $car->getCurrentSpeed(); // prints '0'
$car->accelerate();
print $car->getCurrentSpeed(); // prints '5'
вываливается ошибка
Fatal error: Class 'Car' not found in /var/www/test_php/test.php on line 2
в php.ini у меня прописано
;Windows Extensions
;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
…
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
extention=vehicles.so
тут правда чисто виндовые почему-то библиотеки….
может куда-то в другое место надо прописать extention=vehicles.so
я не нашла…. -
-
2 августа 2010 г. 13:17, спустя 11 часов 44 минуты 17 секунд
винда или линукс для начала? Если линукс, то файл с расширением в папку с расширениями скопирован?Work, buy, consume, die -
3 августа 2010 г. 1:07, спустя 11 часов 50 минут 4 секунды
;Windows Extensions
тут правда чисто виндовые почему-то библиотеки….
стало быть винда -
3 августа 2010 г. 2:56, спустя 1 час 49 минут 4 секунды
я собираю под линукс!
я собрала 2 тестовых примера, точнее попыталась
отсюда http://devzone.zend.com/article/4486
и отсюда http://habrahabr.ru/blogs/php/75445/
в первом примере у меня даже модуль добавился, назвался он ужасно странно правда, но в тесте работать отказался
во втором примере модуль у меня даже не добавился
своё задание я делать даже не пыталась ещё, тк там есть зависимость от ещё одной самописной либы и от Qt и что с этим делать пока непонятно
реально ли это вообще?
вследствие этого возникли вопросы
1) в какой папке необходимо собирать исходники - в любой или в include/php/ext/ ?
2) как надо устанавливать собранный модуль? make install
php -d"extension=mylib.so" -m
или
cp ./modules/mylib.so lib/php/extensions
как и где указать, что мой модуль зависит ещё от динамических сишных библиотек и от Qt?
+я ничего не поняла зачем переписывать код функций, которые и так написаны - ладно ещё с выделением/удалением памяти - это ещё хоть как-то понятно, а вот всё остальное…
+ отсюда вопрос - нужны ли исходники, т.е. исходная либа на C где она должна лежать
где указать путь к ней?? -
3 августа 2010 г. 3:21, спустя 25 минут 8 секунд
после того как прописали свой экстеншен, выполните php -m
что он выводит?https://smappi.org/ - платформа по созданию API на все случаи жизни -
3 августа 2010 г. 3:27, спустя 5 минут 24 секунды
сейчас пытаюсь собрать hello_world
php -m моего модуля не выводит
в php-config
–extension-dir [/usr/local/lib/php/extensions/no-debug-non-zts-20090626]
как это исправить?? (кривой путь) и откуда это вообще взялось?
как повторно пересобрать модуль после исправления?
madworld:/usr/local/include/php/ext/hello# make
Build complete.
Don't forget to run 'make test'.
у меня вот так постоянно -
3 августа 2010 г. 3:35, спустя 8 минут 29 секунд
при этом в php.ini
; Directory in which the loadable extensions (modules) reside.
extension_dir = "./" -
3 августа 2010 г. 4:02, спустя 26 минут 39 секунд
исправила config
модуль установился
при попытке использования
kate@madworld:/usr/local/include/php/ext/hello$ php -r 'echo hello_world();'
Fatal error: Call to undefined function hello_world() in Command line code on line 1 -
3 августа 2010 г. 4:31, спустя 28 минут 53 секунды
оспади, девушка, ну сдался вам этот модуль? Ну не тянете вы написание экстеншенов к пыху на Сях. А тянули бы - так не задавали б подобных вопросов а самостоятельно их разруливали.Спустя 69 сек.зачем тебе вообще какой-то экстеншн? Используй опкод-кешеры, все будет шустренько работать. -
3 августа 2010 г. 5:22, спустя 51 минуту 14 секунд
о спасибо!
приятно слышать)
да мне вообще было бы проще
shell-exec сделать)
при установке XCache происходит ошибка
AUTOCHECK ERROR: ==== asm zend_op_array =================
make: *** [processor.out] Ошибка 1 -
3 августа 2010 г. 9:15, спустя 3 часа 53 минуты 12 секунд
не всегда
зачем тебе вообще какой-то экстеншн? Используй опкод-кешеры, все будет шустренько работать.Work, buy, consume, die -
3 августа 2010 г. 9:21, спустя 5 минут 29 секунд
там в комментах писали, что как-то криво работает модуль, собранный из исходников в статье, сам автор сказал качать исходник отсюда, может в этом проблемаСпустя 10 сек.это по первому примеруWork, buy, consume, die -
3 августа 2010 г. 9:29, спустя 8 минут 41 секунду
1) в какой папке необходимо собирать исходники - в любой или в include/php/ext/ ?
В любой, главное чтобы компилятор заголовочные файлы нашёл, а линковщик библиотеки необходимыекак и где указать, что мой модуль зависит ещё от динамических сишных библиотек и от Qt?
при линковке -l lib_name.soWork, buy, consume, die -
4 августа 2010 г. 0:06, спустя 14 часов 36 минут 53 секунды
там в комментах писали, что как-то криво работает модуль, собранный из исходников в статье, сам автор сказал качать исходник отсюда, может в этом проблемаСпустя 10 сек.это по первому примеру
скачала - результат тот же…
Fatal error: Class 'Car' not found in /var/www/test_php/test.php on line 2
после php -d"extension=vehicles.so" -m
vehicles в списке модулей выводится
при выполнении php -m сразу после этого уже не выводится
в php.ini строка extension=vehicles.so вписана
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!