Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2013-06

FPC to create PHP extensions for Linux

3 messages · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Unknown author

Anybody have an opinion about writing dynamic extensions for PHP in free pascal?

The samples and discussion at:

http://community.freepascal.org/bboards/message?message_id=342130&forum_id=24082

Indicates PHPToolkit, but all of the definitions inside these file are way out of date.

My current PHP version is 5.4.10 and the compiler directives deal with 5.2.x at the highest.

And the API version is 2001xxxx while the current is 20100525 and higher.

So either I have to inspect the header files in PHP to see what changes have been made
and then do a bunch of testing on struct sizes so I have the header files ported correctly.

And it also does not seem to handle 64 bit linux that well since there are a lot of records with
Word sizes (16 bit) but I need unsigned long int values. (Cardinal)

So if anybody has done anything recent with this on a more recent version of PHP, pass along
a shout out.

Thanks for any answer,

md

Unknown author
to Unknown author

Ok:

After a night of dwelling on the problem, the easiest solution is to create your linux dynamic libraries as a standalone separate lib.so library in free pascal
and then use C to create the php extension and link it to the freepascal library.

Trying to keep up with all of the PHP headers is a real pain in the ass so just
use the extension environment to wrap the Pascal library is the best way.

This is identical to the mysqli interface where the extension links in the libmysqlclient.so.xx library
into the php binary.

Hope this helps anyone doing this sort of thing.

md

Show quoted text 36 lines
Anybody have an opinion about writing dynamic extensions for PHP in free pascal? The samples and discussion at: http://community.freepascal.org/bboards/message?message_id=342130&forum_id=24082 Indicates PHPToolkit, but all of the definitions inside these file are way out of date. My current PHP version is 5.4.10 and the compiler directives deal with 5.2.x at the highest. And the API version is 2001xxxx while the current is 20100525 and higher. So either I have to inspect the header files in PHP to see what changes have been made and then do a bunch of testing on struct sizes so I have the header files ported correctly. And it also does not seem to handle 64 bit linux that well since there are a lot of records with Word sizes (16 bit) but I need unsigned long int values. (Cardinal) So if anybody has done anything recent with this on a more recent version of PHP, pass along a shout out. Thanks for any answer, md _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Unknown author
to Unknown author

For anybody that is working on getting PHP extensions built using freepascal,

I have some gotchas you may want to know about.

The with strategy of avoiding porting the PHP header files into pascal, I am building a .SO library
for linux so that my PHP binaries can link to it by using a quick and dirty C wrapper to
get access to the pascal library.

One of my extensions that I am building in freepascal also uses the {$L } linker command to include some c based object files into the free pascal
shared library.

The trick to compiling the c based object files is to make sure that you build
a special compile script that will include the -fPIC compile option when building the object
files.

Normally, I can just run make on whatever c project and build the object files,
but to link those object files into a freepascal library, you must also make the object
files get position independent code or the linker inside Lazarus/freepascal goes bonkers.

Just an FYI for anybody who comes across this post in history.

md

Show quoted text 64 lines
Ok: After a night of dwelling on the problem, the easiest solution is to create your linux dynamic libraries as a standalone separate lib.so library in free pascal and then use C to create the php extension and link it to the freepascal library. Trying to keep up with all of the PHP headers is a real pain in the ass so just use the extension environment to wrap the Pascal library is the best way. This is identical to the mysqli interface where the extension links in the libmysqlclient.so.xx library into the php binary. Hope this helps anyone doing this sort of thing. md On 6/1/2013 6:45 PM, wrote: > Anybody have an opinion about writing dynamic extensions for PHP in > free pascal? > > The samples and discussion at: > > http://community.freepascal.org/bboards/message?message_id=342130&forum_id=24082 > > > Indicates PHPToolkit, but all of the definitions inside these file > are way out of date. > > My current PHP version is 5.4.10 and the compiler directives deal > with 5.2.x at the highest. > > And the API version is 2001xxxx while the current is 20100525 and > higher. > > So either I have to inspect the header files in PHP to see what > changes have been made > and then do a bunch of testing on struct sizes so I have the header > files ported correctly. > > And it also does not seem to handle 64 bit linux that well since > there are a lot of records with > Word sizes (16 bit) but I need unsigned long int values. (Cardinal) > > So if anybody has done anything recent with this on a more recent > version of PHP, pass along > a shout out. > > Thanks for any answer, > > md > _______________________________________________ > fpc-pascal maillist - > http://lists.freepascal.org/mailman/listinfo/fpc-pascal > _______________________________________________ fpc-pascal maillist - http://lists.freepascal.org/mailman/listinfo/fpc-pascal