Re: PHP FFI oddity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 3, 2020, at 3:30 AM, Christoph M. Becker wrote:
> On 02.01.2020 at 22:38, Larry Garfield wrote:
> 
> > This is a long shot, but I figured I'd try here before PHP-Internals.
> >
> > I'm experimenting with PHP-FFI.  2 weeks ago, I had working code.  The same code 2 weeks later is now not working. (I say "Same code" because I can confirm that via Git.  It's not just me saying I didn't touch it.)
> >
> > The code in question is here:
> >
> > https://github.com/Crell/ffi-test/tree/master/points
> >
> > Running `make inline` (to test loading up the FFI logic inline) works.
> >
> > Running `make preload` (to load the library in a preload routine) fails.
> >
> > Specifically, the preloader.php script is called, and gives this error:
> >
> > PHP Warning:  failed pre-loading '/home/crell/temp/php-ffi-test/points/points.h', cannot resolve C function 'distance' in preloader.php on line 6
> >
> > Line 6 is:
> >
> > FFI::load(__DIR__ . "/points.h");
> >
> > I do not understand how this worked before, but doesn't now.  A friend suggested some library version or path changed, but I've no idea what.
> >
> > The "dummy" example (in a separate folder) works fine.  It's straight out of the PHP manual.  The main difference is it's linking against stdlib, whereas `points` has a tiny custom library.  That's being problematic.
> >
> > Anyone have a recommendation here?  I'm out of ideas.
> 
> Would it work if you used an absolute path in points.h?  If so, I think
> `LD_LIBRARY_PATH` would need adjustment.
> 
> --
> Christoph M. Becker

Nope.  I tried changing the header file to:

#define FFI_LIB "/home/crell/temp/php-ffi-test/points/points.so"

And it still failed with the same error.

--Larry Garfield



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux