Возможно, ваша проблема связана с несоответствием имени модуля (см. % module или передано в командной строке) и имени создаваемого вами файла .so.
PHP или любая система, которая принимает загружаемые двоичные модули, собирается сделать определенные предположения относительно имени точки входа в библиотеку, которую пытается загрузить.PHP, похоже, предполагает, что имя файла (fact.so) будет содержать функцию с именем «fact».
Когда вы запускаете SWIG, явное указание имени модуля «fact», вероятно, решит вашу проблему,В противном случае размещение сгенерированного исходного файла SWIG может помочь нам отладить вашу проблему.