ffi / work-directory
PHP library for interact with working directory
Installs: 3 973
Dependents: 5
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: ^7.4|^8.0
- ext-ffi: *
- ext-mbstring: *
- ffi/env: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.22
- phpunit/phpunit: ^9.6
- vimeo/psalm: ^5.14
This package is auto-updated.
Last update: 2024-12-17 00:28:08 UTC
README
In the case that during the loading of a binary (like *.so
, *.dylib
or *.dll
)
through FFI it depends on some other binary module, then errors may occur if the
first one and dependent libraries are in different directories, like:
// - bin/ // - main.dll // - other/ // - dependency.dll $ffi = \FFI::cdef('...', __DIR__ . '/bin/main.dll'); // Error like "can not load ..." // - In this case, an error occurs because the specified // dependency ("dependency.dll") could not be found in "bin" // or working directory.
This library allows you to load similar dependencies:
// Use "bin/other" directory for dependencies. \FFI\WorkDirectory\WorkDirectory::set(__DIR__ . '/bin/other'); // $ffi = \FFI::cdef('...', __DIR__ . '/bin/main.dll');
You can also use the built-in chdir function for such operations, however it will only work in case of a Non-Thread Safe PHP build (see remark).
Requirements
- PHP >= 7.4
Installation
Library is available as composer repository and can be installed using the following command in a root of your project.
$ composer require ffi/work-directory
Usage
Get Current Work Directory
$directory = \FFI\WorkDirectory\WorkDirectory::get(); if ($directory !== null) { echo 'CWD is: ' . $directory; }
Update Current Work Directory
Getting the full path to the library.
$directory = __DIR__ . '/path/to/directory'; if (\FFI\WorkDirectory\WorkDirectory::set($directory)) { echo 'CWD has been updated to: ' . $directory; }