c ++ — расширение php из SWIG не загружается

Я делаю общую библиотеку, которую я могу использовать в PHP с помощью SWIG. Библиотека основана на некотором коде C ++, который также вызывает функции fortran. Да, это безумие. Первым делом я создал общую библиотеку подпрограмм FORTRAN. Я сделал это с помощью cmake, который создал файл libmasterfile.so. Следующая часть должна была скомпилировать код c ++ в объекты:

g++ -O2 -g -Wall -c -fmessage-length=0 -std=c++11 -fPIC -MMD -MP -MF"Chunk.d" -MT"Chunk.d" -o "Chunk.o" "../Chunk.cpp"g++ -O2 -g -Wall -c -fmessage-length=0 -std=c++11 -fPIC -MMD -MP -MF"MasterFile.d" -MT"MasterFile.d" -o "MasterFile.o" "../MasterFile.cpp"g++ -O2 -g -Wall -c -fmessage-length=0 -std=c++11 -fPIC -MMD -MP -MF"Package.d" -MT"Package.d" -o "Package.o" "../Package.cpp"g++ -O2 -g -Wall -c -fmessage-length=0 -std=c++11 -fPIC -MMD -MP -MF"Queue.d" -MT"Queue.d" -o "Queue.o" "../Queue.cpp"g++ -O2 -g -Wall -c -fmessage-length=0 -std=c++11 -fPIC -MMD -MP -MF"Variable.d" -MT"Variable.d" -o "Variable.o" "../Variable.cpp"

после этого я написал файл интерфейса для разделяемой библиотеки swig:

%module prq
%{
#include "Chunk.h"#include "ConcreteQueue.h"#include "ConcreteRequest.h"#include "MasterFile.h"#include "Package.h"#include "Queue.h"#include "QueueFactory.h"#include "Request.h"#include "RequestFactory.h"#include "Variable.h"using namespace PRQ;
%}
%include "../Chunk.h"%include "../ConcreteQueue.h"%include "../ConcreteRequest.h"%include "../MasterFile.h"%include "../Package.h"%include "../Queue.h"%include "../QueueFactory.h"%include "../Request.h"%include "../RequestFactory.h"%include "../Variable.h"

Далее нужно выполнить его, затем скомпилировать его с помощью g ++ и, наконец, связать все вместе:

swig -c++ -php5 prq.i
g++ `php-config --includes` -std=c++11 -O2 -fPIC -c prq_wrap.cpp
g++ -shared Chunk.o MasterFile.o Package.o Queue.o Variable.o prq_wrap.o -o prq.so -L/home/jlahowetz2/development/package-request-queue/ -lmasterfile -lgfortran

Все это, кажется, компилируется правильно. Я добавил расширение через php.ini и перезапустил apache2. Журналы ошибок php не показывают ошибок, и все кажется хорошо, когда я вижу, загружено ли расширение, я ничего не получаю:

php -m | grep prq

и используя скрипт PHP из командной строки, я получаю то же самое, в этом случае нет:

<?php
echo "START\n";
if (extension_loaded("prq")) echo "YES\n";
else echo "NO\n";
echo "END\n";
?>

Так куда мне идти? Не уверен, почему php не загружает расширение. Есть идеи?

1

Решение

Я удалил директиву расширения из php.ini и вместо этого сделал следующее:

  1. cd / etc / php5 / mods-available
  2. sudo vim prq.ini
  3. добавили директиву расширения к вышеуказанному файлу
  4. sudo php5enmod prq
    И это загрузило расширение.
0

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

Других решений пока нет …

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