Coder Social home page Coder Social logo

ffime's People

Contributors

bwoebi avatar iggyvolz avatar ircmaxell avatar mikeytag avatar nilslice avatar siad007 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffime's Issues

Uncaught LogicException: Could not find header file: errno.h given context

<?php
error_reporting(-1);



require __DIR__ . '/vendor/autoload.php';



(new FFIMe\FFIMe("/usr/lib/x86_64-linux-gnu/libuv.so"))
    ->include('/usr/include/uv.h')
    ->codeGen('/libuv.php');

array(4) {
  [0]=>
  string(18) "/usr/local/include"
  [1]=>
  string(12) "/usr/include"
  [2]=>
  string(29) "/usr/include/x86_64-linux-gnu"
  [3]=>
  string(39) "/usr/lib/gcc/x86_64-linux-gnu/8/include"
}
PHP Fatal error:  Uncaught LogicException: Could not find header file: errno.h given context /usr/include (called from /usr/include/uv-errno.h) in /home/projects/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:251
Stack trace:
#0 /home/projects/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(189): PHPCParser\PreProcessor->findHeaderFile()
#1 /home/projects/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(221): PHPCParser\PreProcessor->findAndParse()
#2 /home/projects/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(50): PHPCParser\PreProcessor->resolveInclude()
#3 /home/projects/vendor/ircmaxell/php-c-parser/lib/CParser.php(22): PHPCParser\PreProcessor->process()
#4 /home/projects/vendor/ircmaxell/ffime/lib/FFIMe.php(101): PHPCParser\CParser->parse()
#5 /home/projects/test.php(11): FFIMe\FFIMe->include()
#6 {main}
  thrown in /home/projects/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 251

Work with CGO Shared library header

Hey,

I'm currently working on a project, in which I want to call Go Function in PHP. I created a c-shared library in go with some basic functions:

import "C"
import (
	"fmt"
)

//export print
func print(out *C.char) {
	fmt.Println("[GO print] " + C.GoString(out))
}

//export sum
func sum(a C.int, b C.int) C.int {
	return a + b
}

func main() {}

The header file created by go self looks like:

/* Code generated by cmd/cgo; DO NOT EDIT. */

/* package Go */


#line 1 "cgo-builtin-export-prolog"

#include <stddef.h>

#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif

#endif

/* Start of preamble from import "C" comments.  */




/* End of preamble from import "C" comments.  */


/* Start of boilerplate cgo prologue.  */
#line 1 "cgo-gcc-export-header-prolog"

#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H

typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef size_t GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
#ifdef _MSC_VER
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
#endif

/*
  static assertion to make sure the file is being used on architecture
  at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;

#endif

/* End of boilerplate cgo prologue.  */

#ifdef __cplusplus
extern "C" {
#endif

extern void print(char* out);
extern int sum(int a, int b);

#ifdef __cplusplus
}
#endif

I want to parse it as followed:

$lib = (new FFIMe($libPath . "libutil.so"))
            ->include($libPath . "libutil.h")
            ->build();

I get the following error:
Unknown directive found line {"exception":"[object] (LogicException(code: 0): Unknown directive found line at /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:140)

I would greatly appreciate any suggestions or ideas that you may have on this topic.

suppress FFIMe warnings

Hi, thanks for this great library!

I'm wondering if you'd consider a PR that would add an option to suppress these warnings? Maybe just a private flag on the class defaulting to true, that can be set with a method $ffi->showWarnings(false)->codeGen('File.php') or something.

Warning from: use double

Hey there - is there a way to disable the use double statement from being generated in the FFI wrapper?

See this issue here for reference:

extism/extism#142

Forgive my naivety, but I'm not sure what that statement does, but it consistently produces a warning printed to output.

Help with a header file

Hi @bwoebi

This isn't directly related to FFIMe however not sure how will it help. I'm still exploring how to use FFIMe after your latest fixes allowing it to at least generate the wrapper file (not sure if wrapper is the right word).

So I have the following header file, and I'm struggling with the FFI:: code that should be able to operate on the db_prepare_request function. I went down to working on casting and passing direct addr, however without luck and always crashes in the binary shared object of the library.

Would really, really, appreciate if you could help here.

Here's the header file.

#ifndef _DB_H
#define _DB_H

typedef struct db_client db_client_t;

/* Initialize the database library - must be done once per process! */
int db_init(void);

/* Client create/free */
db_client_t *db_create_client(void);
void db_free_client(db_client_t *c);

/* Prepare a request, before calling execute. If arg_lens is NULL, strings are
 * processed as null terminated. Otherwise lengths are taken from the separate
 * size_t array.
 */
int db_prepare_request(db_client_t *c, int args_count, const char **args, size_t *arg_lens);

/* Execute request; returns 0 on success. */
int db_execute(db_client_t *c);

/* Read chunk from reply. Chunking depends on internal database representation
 * so make no assumptions.
 *
 * Every call returns a pointer and updates chunk_len. When no more chunks
 * are available, NULL is returned.
 */
const char *db_read_reply_chunk(db_client_t *c, int *chunk_len);


#endif  /* _DB_H */

All I managed to have with no crashes is $ffi = FFI::load("db.h"); $ffi->db_init(); $client = $ffi->db_create_client();

Also, not sure if FFIMe would help making things easier right here as the examples doesn't include enough examples for various use cases for non experts.

Many thanks!

Could not find header file: limits.h given context, trying to operate on libcurl

Hi @ircmaxell

Running the following code, not necessarily on this specific version of libcurl, but other versions on different Linux distros as well.

<?php
require __DIR__ . '/vendor/autoload.php';
(new FFIMe\FFIMe("/usr/lib64/libcurl.so.4.7.0"))
    ->include("/usr/include/curl/curl.h")
    ->codeGen('curl\\curl', __DIR__ . '/curl.php');
require __DIR__ . '/curl.php';
$libc = new curl\curl;
//$libc->printf("test\n");

I am getting the following, and here's the exact curl.h file I currently have https://github.com/curl/curl/blob/curl-7_82_0/include/curl/curl.h

array(6) {
  [0]=>
  string(18) "/usr/local/include"
  [1]=>
  string(12) "/usr/include"
  [2]=>
  string(29) "/usr/include/x86_64-linux-gnu"
  [3]=>
  string(107) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/"
  [4]=>
  string(157) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/"
  [5]=>
  string(40) "/usr/lib/gcc/x86_64-linux-gnu/12/include"
}
PHP Fatal error:  Uncaught LogicException: Could not find header file: limits.h given context /usr/include (called from /usr/include/limits.h) in ~/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:267
Stack trace:
#0 ~/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(219): PHPCParser\PreProcessor->findHeaderFile()
#1 ~/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(256): PHPCParser\PreProcessor->findAndParse()
#2 ~/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(60): PHPCParser\PreProcessor->resolveInclude()
#3 ~/vendor/ircmaxell/php-c-parser/lib/CParser.php(23): PHPCParser\PreProcessor->process()
#4 ~/vendor/ircmaxell/ffime/lib/FFIMe.php(113): PHPCParser\CParser->parse()
#5 ~/test2.php(4): FFIMe\FFIMe->include()
#6 {main}
  thrown in ~/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 267

I tried to lookup for where limits.h exists on my system, and this was the result.

/usr/include/limits.h
/usr/include/c++/12/tr1/limits.h
/usr/include/linux/limits.h
/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed/limits.h
/usr/lib/gcc/x86_64-linux-gnu/12/install-tools/include/limits.h
/usr/lib/gcc/x86_64-redhat-linux/12/include/limits.h

Not sure why there's an issue with limits.h.

Any idea what am I doing wrong?

Uncaught PHPCParser\Error: Syntax error, unexpected IDENTIFIER(int_least8_t)

Hi @bwoebi

Attempting to use Redis's https://github.com/redis/hiredis library, I'm getting the following error.

PHP Fatal error:  Uncaught PHPCParser\Error: Syntax error, unexpected IDENTIFIER(int_least8_t), expecting ',' or ';' on line 395 in ~/hiredis/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php:236
Stack trace:
#0 ~/hiredis/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php(105): PHPCParser\ParserAbstract->doParse()
#1 ~/hiredis/vendor/ircmaxell/php-c-parser/lib/CParser.php(24): PHPCParser\ParserAbstract->parse()
#2 ~/hiredis/vendor/ircmaxell/ffime/lib/FFIMe.php(113): PHPCParser\CParser->parse()
#3 ~/hiredis/hiredis-rev1.php(12): FFIMe\FFIMe->include()
#4 {main}
  thrown in ~/hiredis/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php on line 236

The hiredis.h file itself doesn't include any int_least8_t yet one of its dependencies stdint.h which is a glibc-headers package included header.

I guess the part of interest in the stdint.h file is the following.

/* Small types.  */

/* Signed.  */
typedef __int_least8_t int_least8_t;
typedef __int_least16_t int_least16_t;
typedef __int_least32_t int_least32_t;
typedef __int_least64_t int_least64_t;

/* Unsigned.  */
typedef __uint_least8_t uint_least8_t;
typedef __uint_least16_t uint_least16_t;
typedef __uint_least32_t uint_least32_t;
typedef __uint_least64_t uint_least64_t;

[Warning] Skipping *, not found in object file

Hey @ircmaxell

Running the following code..

<?php
require __DIR__ . '/../../vendor/autoload.php';
(new FFIMe\FFIMe("/lib64/libc.so.6"))
    ->include("stdio.h")
    ->codeGen('stdio\\stdio', __DIR__ . '/stdio.php');
require __DIR__ . '/stdio.php';
$libc = new stdio\stdio;
$libc->printf("test\n");

I am getting the following flood of warnings, altho its generating a stdio.php file.

[Warning] Skipping renameat, not found in object file
[Warning] Skipping fflush, not found in object file
[Warning] Skipping fflush_unlocked, not found in object file
[Warning] Skipping open_memstream, not found in object file
[Warning] Skipping setvbuf, not found in object file
[Warning] Skipping setbuffer, not found in object file
[Warning] Skipping vsprintf, not found in object file
[Warning] Skipping snprintf, not found in object file
[Warning] Skipping vsnprintf, not found in object file
[Warning] Skipping vdprintf, not found in object file
[Warning] Skipping vfscanf, not found in object file
[Warning] Skipping vscanf, not found in object file
[Warning] Skipping vsscanf, not found in object file
[Warning] Skipping vfscanf, not found in object file
[Warning] Skipping vscanf, not found in object file
[Warning] Skipping vsscanf, not found in object file
[Warning] Skipping fgetc, not found in object file
[Warning] Skipping getc, not found in object file
[Warning] Skipping getc_unlocked, not found in object file
[Warning] Skipping fgetc_unlocked, not found in object file
[Warning] Skipping putc, not found in object file
[Warning] Skipping putc_unlocked, not found in object file
[Warning] Skipping fgets, not found in object file
[Warning] Skipping gets, not found in object file
[Warning] Skipping getdelim, not found in object file
[Warning] Skipping getline, not found in object file
[Warning] Skipping fputs, not found in object file
[Warning] Skipping puts, not found in object file
[Warning] Skipping fread, not found in object file
[Warning] Skipping fwrite, not found in object file
[Warning] Skipping fread_unlocked, not found in object file
[Warning] Skipping ftell, not found in object file
[Warning] Skipping fseeko, not found in object file
[Warning] Skipping ftello, not found in object file
[Warning] Skipping feof, not found in object file
[Warning] Skipping ferror, not found in object file
[Warning] Skipping feof_unlocked, not found in object file
[Warning] Skipping ferror_unlocked, not found in object file
[Warning] Skipping fileno, not found in object file
[Warning] Skipping fileno_unlocked, not found in object file
[Warning] Skipping flockfile, not found in object file
[Warning] Skipping ftrylockfile, not found in object file
[Warning] Skipping funlockfile, not found in object file
[Warning] __cfloat128 could not be compiled: _Complex float is not supported by ext/ffi
PHP Warning:  Class "ffime\__gnuc_va_list" not found in ~/trial/vendor/ircmaxell/ffime/lib/FFIMe.php(136) : eval()'d code on line 4134
PHP Warning:  Class "ffime\__gnuc_va_list_ptr" not found in ~/trial/vendor/ircmaxell/ffime/lib/FFIMe.php(136) : eval()'d code on line 4135
PHP Warning:  Class "ffime\__gnuc_va_list_ptr_ptr" not found in ~/trial/vendor/ircmaxell/ffime/lib/FFIMe.php(136) : eval()'d code on line 4136
PHP Warning:  Class "ffime\__gnuc_va_list_ptr_ptr_ptr" not found in ~/trial/vendor/ircmaxell/ffime/lib/FFIMe.php(136) : eval()'d code on line 4137
PHP Warning:  Class "ffime\__gnuc_va_list_ptr_ptr_ptr_ptr" not found in ~/trial/vendor/ircmaxell/ffime/lib/FFIMe.php(136) : eval()'d code on line 4138
test

Any idea why?

I am trying to understand how your library works and what its used for and finding issues like that along the way.

Missing int_ptr classes

I'm playing around with IUP (a gui toolkit written in C which seems a nice test case for this generator) and the library uses references to integers, below code is needed here:

$class = array_merge($class, $this->compileDeclClassImpl('int_ptr', 'int*', $className));
$class = array_merge($class, $this->compileDeclClassImpl('int_ptr_ptr', 'int**', $className));
$class = array_merge($class, $this->compileDeclClassImpl('int_ptr_ptr_ptr', 'int***', $className));

Unable to locate header files

<?php

require __DIR__ . '/vendor/autoload.php';

$prefix = '/data/data/com.termux/files/usr';

$libcurl = (new FFIMe\FFIMe($prefix . '/lib/libcurl.so'))
        ->include($prefix . '/include/curl/url.h')
        ->build();
/data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:250:
array(3) {
  [0] =>
  string(18) "/usr/local/include"
  [1] =>
  string(12) "/usr/include"
  [2] =>
  string(29) "/usr/include/x86_64-linux-gnu"
}

Fatal error: Uncaught LogicException: Could not find header file: /data/data/com.termux/files/usr/include/curl/url.h given context  (called from ) in /data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 251

LogicException: Could not find header file: /data/data/com.termux/files/usr/include/curl/url.h given context  (called from ) in /data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 251

Call Stack:
    0.0008     370680   1. {main}() /data/data/com.termux/files/home/ffi/main.php:0
    0.3565     703608   2. FFIMe\FFIMe->include() /data/data/com.termux/files/home/ffi/main.php:8
    0.3566     703608   3. PHPCParser\CParser->parse() /data/data/com.termux/files/home/ffi/vendor/ircmaxell/ffime/lib/FFIMe.php:101
    0.3723     706984   4. PHPCParser\PreProcessor->process() /data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/CParser.php:22
    0.3724     706984   5. PHPCParser\PreProcessor->findAndParse() /data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:27
    0.3724     706984   6. PHPCParser\PreProcessor->findHeaderFile() /data/data/com.termux/files/home/ffi/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:189

Could not find header file: stddef.h given context (called from /usr/include/stdio.h)

When I try to run example.php, I get the below output:

array(5) {
  [0]=>
  string(18) "/usr/local/include"
  [1]=>
  string(29) "/usr/include/x86_64-linux-gnu"
  [2]=>
  string(12) "/usr/include"
  [3]=>
  string(107) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/"
  [4]=>
  string(157) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/"
}
PHP Fatal error:  Uncaught LogicException: Could not find header file: stddef.h given context  (called from /usr/include/stdio.h) in /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:271

I don't have anything else installed via composer - here's the output of composer show:

ircmaxell/ffime                     dev-master 0b7fb71 Make life easy when working with FFI
ircmaxell/php-c-parser              dev-master 365c52d Parse C when using PHP
ircmaxell/php-object-symbolresolver dev-master e9c4107 An object file (ELF, Mach-O) parser

I'm not sure what information you might need to help me resolve this, so I've included the full output below, as well as the output of php -i. Let me know if you want any more details as well.

Click to see full output including stack trace
array(5) {
  [0]=>
  string(18) "/usr/local/include"
  [1]=>
  string(29) "/usr/include/x86_64-linux-gnu"
  [2]=>
  string(12) "/usr/include"
  [3]=>
  string(107) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/"
  [4]=>
  string(157) "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/"
}
PHP Fatal error:  Uncaught LogicException: Could not find header file: stddef.h given context  (called from /usr/include/stdio.h) in /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:271
Stack trace:
#0 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(223): PHPCParser\PreProcessor->findHeaderFile('stddef.h', '', '/usr/include/st...', false)
#1 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(260): PHPCParser\PreProcessor->findAndParse('stddef.h', '', '/usr/include/st...', false)
#2 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(56): PHPCParser\PreProcessor->resolveInclude(Object(PHPCParser\PreProcessor\Token), '/usr/include/st...')
#3 /var/www/html/vendor/ircmaxell/php-c-parser/lib/CParser.php(23): PHPCParser\PreProcessor->process('stdio.h')
#4 /var/www/html/vendor/ircmaxell/ffime/lib/FFIMe.php(109): PHPCParser\CParser->parse('stdio.h', Object(PHPCParser\Context))
#5 /var/www/html/examples/doesntwork.php(5): FFIMe\FFIMe->include('stdio.h')
#6 {main}
  thrown in /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 271

Fatal error: Uncaught LogicException: Could not find header file: stddef.h given context  (called from /usr/include/stdio.h) in /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php:271
Stack trace:
#0 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(223): PHPCParser\PreProcessor->findHeaderFile('stddef.h', '', '/usr/include/st...', false)
#1 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(260): PHPCParser\PreProcessor->findAndParse('stddef.h', '', '/usr/include/st...', false)
#2 /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php(56): PHPCParser\PreProcessor->resolveInclude(Object(PHPCParser\PreProcessor\Token), '/usr/include/st...')
#3 /var/www/html/vendor/ircmaxell/php-c-parser/lib/CParser.php(23): PHPCParser\PreProcessor->process('stdio.h')
#4 /var/www/html/vendor/ircmaxell/ffime/lib/FFIMe.php(109): PHPCParser\CParser->parse('stdio.h', Object(PHPCParser\Context))
#5 /var/www/html/examples/doesntwork.php(5): FFIMe\FFIMe->include('stdio.h')
#6 {main}
  thrown in /var/www/html/vendor/ircmaxell/php-c-parser/lib/PreProcessor.php on line 271
Click to see full output of `php -i`
phpinfo()
PHP Version => 8.1.26

System => Linux c-in-php-web 6.5.0-14-generic #14~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Nov 20 18:15:30 UTC 2 x86_64
Build Date => Nov 24 2023 13:12:14
Build System => Linux
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/php/8.1/cli
Loaded Configuration File => /etc/php/8.1/cli/php.ini
Scan this dir for additional .ini files => /etc/php/8.1/cli/conf.d
Additional .ini files parsed => /etc/php/8.1/cli/conf.d/10-mysqlnd.ini,
/etc/php/8.1/cli/conf.d/10-opcache.ini,
/etc/php/8.1/cli/conf.d/10-pdo.ini,
/etc/php/8.1/cli/conf.d/15-xml.ini,
/etc/php/8.1/cli/conf.d/20-apcu.ini,
/etc/php/8.1/cli/conf.d/20-assert.ini,
/etc/php/8.1/cli/conf.d/20-bcmath.ini,
/etc/php/8.1/cli/conf.d/20-bz2.ini,
/etc/php/8.1/cli/conf.d/20-calendar.ini,
/etc/php/8.1/cli/conf.d/20-ctype.ini,
/etc/php/8.1/cli/conf.d/20-curl.ini,
/etc/php/8.1/cli/conf.d/20-dom.ini,
/etc/php/8.1/cli/conf.d/20-exif.ini,
/etc/php/8.1/cli/conf.d/20-ffi.ini,
/etc/php/8.1/cli/conf.d/20-fileinfo.ini,
/etc/php/8.1/cli/conf.d/20-ftp.ini,
/etc/php/8.1/cli/conf.d/20-gd.ini,
/etc/php/8.1/cli/conf.d/20-gettext.ini,
/etc/php/8.1/cli/conf.d/20-iconv.ini,
/etc/php/8.1/cli/conf.d/20-igbinary.ini,
/etc/php/8.1/cli/conf.d/20-imagick.ini,
/etc/php/8.1/cli/conf.d/20-intl.ini,
/etc/php/8.1/cli/conf.d/20-ldap.ini,
/etc/php/8.1/cli/conf.d/20-mbstring.ini,
/etc/php/8.1/cli/conf.d/20-msgpack.ini,
/etc/php/8.1/cli/conf.d/20-mysqli.ini,
/etc/php/8.1/cli/conf.d/20-pdo_mysql.ini,
/etc/php/8.1/cli/conf.d/20-pdo_pgsql.ini,
/etc/php/8.1/cli/conf.d/20-pdo_sqlite.ini,
/etc/php/8.1/cli/conf.d/20-pgsql.ini,
/etc/php/8.1/cli/conf.d/20-phar.ini,
/etc/php/8.1/cli/conf.d/20-posix.ini,
/etc/php/8.1/cli/conf.d/20-readline.ini,
/etc/php/8.1/cli/conf.d/20-redis.ini,
/etc/php/8.1/cli/conf.d/20-shmop.ini,
/etc/php/8.1/cli/conf.d/20-simplexml.ini,
/etc/php/8.1/cli/conf.d/20-soap.ini,
/etc/php/8.1/cli/conf.d/20-sockets.ini,
/etc/php/8.1/cli/conf.d/20-sqlite3.ini,
/etc/php/8.1/cli/conf.d/20-sysvmsg.ini,
/etc/php/8.1/cli/conf.d/20-sysvsem.ini,
/etc/php/8.1/cli/conf.d/20-sysvshm.ini,
/etc/php/8.1/cli/conf.d/20-tokenizer.ini,
/etc/php/8.1/cli/conf.d/20-uploadprogress.ini,
/etc/php/8.1/cli/conf.d/20-xmlreader.ini,
/etc/php/8.1/cli/conf.d/20-xmlrpc.ini,
/etc/php/8.1/cli/conf.d/20-xmlwriter.ini,
/etc/php/8.1/cli/conf.d/20-xsl.ini,
/etc/php/8.1/cli/conf.d/20-zip.ini,
/etc/php/8.1/cli/conf.d/25-memcached.ini

PHP API => 20210902
PHP Extension => 20210902
Zend Extension => 420210902
Zend Extension Build => API420210902,NTS
PHP Extension Build => API20210902,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
Zend Max Execution Timers => disabled
IPv6 Support => enabled
DTrace Support => available, disabled

Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, compress.bzip2, phar, zip
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, convert.*, consumed, dechunk, bzip2.*, convert.iconv.*

This program makes use of the Zend Scripting Language Engine:
Zend Engine v4.1.26, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.26, Copyright (c), by Zend Technologies


 _______________________________________________________________________


Configuration

apcu

APCu Support => Disabled
Version => 5.1.23
APCu Debugging => Disabled
MMAP Support => Enabled
MMAP File Mask =>  
Serialization Support => Disabled
Build Date => Nov 25 2023 14:41:16

Directive => Local Value => Master Value
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.entries_hint => 4096 => 4096
apc.gc_ttl => 3600 => 3600
apc.mmap_file_mask => no value => no value
apc.preload_path => no value => no value
apc.serializer => php => php
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => Off => Off
apc.smart => 0 => 0
apc.ttl => 0 => 0
apc.use_request_time => Off => Off

bcmath

BCMath support => enabled

Directive => Local Value => Master Value
bcmath.scale => 0 => 0

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bzip2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.8, 13-Jul-2019

calendar

Calendar support => enabled

Core

PHP Version => 8.1.26

Directive => Local Value => Master Value
allow_url_fopen => On => On
allow_url_include => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => UTF-8 => UTF-8
default_mimetype => text/html => text/html
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => STDOUT => STDOUT
display_startup_errors => On => On
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => Off => Off
enable_post_data_reading => On => On
error_append_string => no value => no value
error_log => no value => no value
error_prepend_string => no value => no value
error_reporting => 32767 => 32767
expose_php => Off => Off
extension_dir => /usr/lib/php/20210902 => /usr/lib/php/20210902
fiber.stack_size => no value => no value
file_uploads => On => On
hard_timeout => 2 => 2
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => .:/usr/share/php => .:/usr/share/php
input_encoding => no value => no value
internal_encoding => no value => no value
log_errors => On => On
mail.add_x_header => On => On
mail.force_extra_parameters => no value => no value
mail.log => no value => no value
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 5000 => 5000
max_multipart_body_parts => -1 => -1
memory_limit => -1 => -1
open_basedir => no value => no value
output_buffering => 0 => 0
output_encoding => no value => no value
output_handler => no value => no value
post_max_size => 100M => 100M
precision => 14 => 14
realpath_cache_size => 4096K => 4096K
realpath_cache_ttl => 120 => 120
register_argc_argv => On => On
report_memleaks => On => On
report_zend_debug => Off => Off
request_order => GP => GP
sendmail_from => no value => no value
sendmail_path => /usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025 => /usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025
serialize_precision => -1 => -1
short_open_tag => Off => Off
SMTP => localhost => localhost
smtp_port => 25 => 25
sys_temp_dir => no value => no value
syslog.facility => LOG_USER => LOG_USER
syslog.filter => no-ctrl => no-ctrl
syslog.ident => php => php
unserialize_callback_func => no value => no value
upload_max_filesize => 100M => 100M
upload_tmp_dir => no value => no value
user_dir => no value => no value
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
variables_order => EGPCS => EGPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
zend.assertions => 1 => 1
zend.detect_unicode => On => On
zend.enable_gc => On => On
zend.exception_ignore_args => Off => Off
zend.exception_string_param_max_len => 15 => 15
zend.multibyte => Off => Off
zend.script_encoding => no value => no value
zend.signal_check => Off => Off

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => 7.74.0
Age => 7
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => Yes
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => Yes
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/1.1.1w
ZLib Version => 1.2.11
libSSH Version => libssh2/1.9.0

Directive => Local Value => Master Value
curl.cainfo => no value => no value

date

date/time support => enabled
timelib version => 2021.19
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => UTC

Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.833333 => 90.833333
date.sunset_zenith => 90.833333 => 90.833333
date.timezone => UTC => UTC

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.9.14
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled

exif

EXIF Support => enabled
Supported EXIF Version => 0220
Supported filetypes => JPEG, TIFF
Multibyte decoding support using mbstring => enabled
Extended EXIF tag formats => Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson

Directive => Local Value => Master Value
exif.decode_jis_intel => JIS => JIS
exif.decode_jis_motorola => JIS => JIS
exif.decode_unicode_intel => UCS-2LE => UCS-2LE
exif.decode_unicode_motorola => UCS-2BE => UCS-2BE
exif.encode_jis => no value => no value
exif.encode_unicode => ISO-8859-15 => ISO-8859-15

FFI

FFI support => enabled

Directive => Local Value => Master Value
ffi.enable => On => On
ffi.preload => no value => no value

fileinfo

fileinfo support => enabled
libmagic => 540

filter

Input Validation and Filtering => enabled

Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value

ftp

FTP support => enabled
FTPS support => enabled

gd

GD Support => enabled
GD headers Version => 2.3.3
GD library Version => 2.3.3
FreeType Support => enabled
FreeType Linkage => with freetype
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
PNG Support => enabled
WBMP Support => enabled
XPM Support => enabled
XBM Support => enabled
WebP Support => enabled
BMP Support => enabled
AVIF Support => enabled
TGA Read Support => enabled

Directive => Local Value => Master Value
gd.jpeg_ignore_warning => 1 => 1

gettext

GetText Support => enabled

hash

hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat murmur3a murmur3c murmur3f xxh32 xxh64 xxh3 xxh128 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 

MHASH support => Enabled
MHASH API Version => Emulated Support

iconv

iconv support => enabled
iconv implementation => glibc
iconv library version => 2.31

Directive => Local Value => Master Value
iconv.input_encoding => no value => no value
iconv.internal_encoding => no value => no value
iconv.output_encoding => no value => no value

igbinary

igbinary support => enabled
igbinary version => 3.2.15
igbinary APCu serializer ABI => 0
igbinary session support => yes

Directive => Local Value => Master Value
igbinary.compact_strings => On => On

imagick

imagick module => enabled
imagick module version => 3.7.0
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date => 2021-01-25
ImageMagick number of supported formats:  => 237
ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DNG, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPG, MRW, MSL, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMV, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value
imagick.allow_zero_dimension_images => 0 => 0
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.set_single_thread => 1 => 1
imagick.shutdown_sleep_count => 10 => 10
imagick.skip_version_check => 1 => 1

intl

Internationalization support => enabled
ICU version => 67.1
ICU Data version => 67.1
ICU TZData version => 2019c
ICU Unicode version => 13.0

Directive => Local Value => Master Value
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => Off => Off

json

json support => enabled

ldap

LDAP Support => enabled
Total Links => 0/unlimited
API Version => 3001
Vendor Name => OpenLDAP
Vendor Version => 20457
SASL Support => Enabled

Directive => Local Value => Master Value
ldap.max_links => Unlimited => Unlimited

libxml

libXML support => active
libXML Compiled Version => 2.9.14
libXML Loaded Version => 20914
libXML streams => enabled

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) version => 6.9.6

Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.regex_retry_limit => 1000000 => 1000000
mbstring.regex_stack_limit => 100000 => 100000
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value

memcached

memcached support => enabled
Version => 3.2.0
libmemcached version => 1.0.18
SASL support => yes
Session support => yes
igbinary support => yes
json support => yes
msgpack support => yes

Directive => Local Value => Master Value
memcached.compression_factor => 1.3 => 1.3
memcached.compression_threshold => 2000 => 2000
memcached.compression_type => fastlz => fastlz
memcached.default_binary_protocol => Off => Off
memcached.default_connect_timeout => 0 => 0
memcached.default_consistent_hash => Off => Off
memcached.serializer => php => php
memcached.sess_binary_protocol => On => On
memcached.sess_connect_timeout => 0 => 0
memcached.sess_consistent_hash => On => On
memcached.sess_consistent_hash_type => ketama => ketama
memcached.sess_lock_expire => 0 => 0
memcached.sess_lock_max_wait => not set => not set
memcached.sess_lock_retries => 5 => 5
memcached.sess_lock_wait => not set => not set
memcached.sess_lock_wait_max => 150 => 150
memcached.sess_lock_wait_min => 150 => 150
memcached.sess_locking => On => On
memcached.sess_number_of_replicas => 0 => 0
memcached.sess_persistent => Off => Off
memcached.sess_prefix => memc.sess.key. => memc.sess.key.
memcached.sess_randomize_replica_read => Off => Off
memcached.sess_remove_failed_servers => Off => Off
memcached.sess_sasl_password => no value => no value
memcached.sess_sasl_username => no value => no value
memcached.sess_server_failure_limit => 0 => 0
memcached.store_retry_count => 0 => 0

msgpack

MessagePack Support => enabled
Session Support => enabled
extension Version => 2.2.0
header Version => 3.2.0

Directive => Local Value => Master Value
msgpack.error_display => On => On
msgpack.illegal_key_insert => Off => Off
msgpack.php_only => On => On
msgpack.use_str8_serialization => On => On

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 8.1.26
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysqli.default_user => no value => no value
mysqli.local_infile_directory => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
mysqli.rollback_on_cached_plink => Off => Off

mysqlnd

mysqlnd => enabled
Version => mysqlnd 8.1.26
Compression => supported
core SSL => supported
extended SSL => supported
Command buffer size => 4096
Read buffer size => 32768
Read timeout => 86400
Collecting statistics => Yes
Collecting memory statistics => No
Tracing => n/a
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
API Extensions => mysqli,pdo_mysql

openssl

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.1.1w  11 Sep 2023
OpenSSL Header Version => OpenSSL 1.1.1w  11 Sep 2023
Openssl default config => /usr/lib/ssl/openssl.cnf

Directive => Local Value => Master Value
openssl.cafile => no value => no value
openssl.capath => no value => no value

pcntl

pcntl support => enabled

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 10.40 2022-04-14
PCRE Unicode Version => 14.0.0
PCRE JIT Support => enabled
PCRE JIT Target => x86 64bit (little endian + unaligned)

Directive => Local Value => Master Value
pcre.backtrack_limit => 1000000 => 1000000
pcre.jit => 1 => 1
pcre.recursion_limit => 100000 => 100000

PDO

PDO support => enabled
PDO drivers => mysql, pgsql, sqlite

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 8.1.26

Directive => Local Value => Master Value
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

pdo_pgsql

PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 13.13

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.34.1

pgsql

PostgreSQL Support => enabled
PostgreSQL (libpq) Version => 13.13
Multibyte character support => enabled
Active Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited

Phar

Phar: PHP Archive support => enabled
Phar API version => 1.1.1
Phar-based phar archives => enabled
Tar-based phar archives => enabled
ZIP-based phar archives => enabled
gzip compression => enabled
bzip2 compression => enabled
Native OpenSSL support => enabled


Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive => Local Value => Master Value
phar.cache_list => no value => no value
phar.readonly => On => On
phar.require_hash => On => On

posix

POSIX support => enabled

readline

Readline Support => enabled
Readline library => EditLine wrapper

Directive => Local Value => Master Value
cli.pager => no value => no value
cli.prompt => \b \>  => \b \> 

redis

Redis Support => enabled
Redis Version => 6.0.2
Redis Sentinel Version => 1.0
Available serializers => php, json, igbinary
Available compression => lzf, zstd, lz4

Directive => Local Value => Master Value
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.consistent => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
redis.arrays.hosts => no value => no value
redis.arrays.index => 0 => 0
redis.arrays.lazyconnect => 0 => 0
redis.arrays.names => no value => no value
redis.arrays.pconnect => 0 => 0
redis.arrays.previous => no value => no value
redis.arrays.readtimeout => 0 => 0
redis.arrays.retryinterval => 0 => 0
redis.clusters.auth => no value => no value
redis.clusters.cache_slots => 0 => 0
redis.clusters.persistent => 0 => 0
redis.clusters.read_timeout => 0 => 0
redis.clusters.seeds => no value => no value
redis.clusters.timeout => 0 => 0
redis.pconnect.connection_limit => 0 => 0
redis.pconnect.echo_check_liveness => 1 => 1
redis.pconnect.pool_detect_dirty => 0 => 0
redis.pconnect.pool_pattern => no value => no value
redis.pconnect.pool_poll_timeout => 0 => 0
redis.pconnect.pooling_enabled => 1 => 1
redis.session.early_refresh => 0 => 0
redis.session.lock_expire => 0 => 0
redis.session.lock_retries => 100 => 100
redis.session.lock_wait_time => 20000 => 20000
redis.session.locking_enabled => 0 => 0

Reflection

Reflection => enabled

session

Session Support => enabled
Registered save handlers => files user redis rediscluster memcached 
Registered serializer handlers => php_serialize php php_binary igbinary msgpack 

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => no value => no value
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_samesite => no value => no value
session.cookie_secure => 0 => 0
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 0 => 0
session.lazy_write => On => On
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => /var/lib/php/sessions => /var/lib/php/sessions
session.serialize_handler => php => php
session.sid_bits_per_character => 4 => 4
session.sid_length => 32 => 32
session.upload_progress.cleanup => On => On
session.upload_progress.enabled => On => On
session.upload_progress.freq => 1% => 1%
session.upload_progress.min_freq => 1 => 1
session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix => upload_progress_ => upload_progress_
session.use_cookies => 1 => 1
session.use_only_cookies => 1 => 1
session.use_strict_mode => 0 => 0
session.use_trans_sid => 0 => 0

shmop

shmop support => enabled

SimpleXML

SimpleXML support => enabled
Schema support => enabled

soap

Soap Client => enabled
Soap Server => enabled

Directive => Local Value => Master Value
soap.wsdl_cache => 1 => 1
soap.wsdl_cache_dir => /tmp => /tmp
soap.wsdl_cache_enabled => On => On
soap.wsdl_cache_limit => 5 => 5
soap.wsdl_cache_ttl => 86400 => 86400

sockets

Sockets Support => enabled

sodium

sodium support => enabled
libsodium headers version => 1.0.18
libsodium library version => 1.0.18

SPL

SPL support => enabled
Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

sqlite3

SQLite3 support => enabled
SQLite Library => 3.34.1

Directive => Local Value => Master Value
sqlite3.defensive => On => On
sqlite3.extension_dir => no value => no value

standard

Dynamic Library Support => enabled
Path to sendmail => /usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025

Directive => Local Value => Master Value
assert.active => On => On
assert.bail => Off => Off
assert.callback => no value => no value
assert.exception => On => On
assert.warning => On => On
auto_detect_line_endings => Off => Off
default_socket_timeout => 60 => 60
from => no value => no value
session.trans_sid_hosts => no value => no value
session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
unserialize_max_depth => 4096 => 4096
url_rewriter.hosts => no value => no value
url_rewriter.tags => a=href,area=href,frame=src,input=src,form=fakeentry => a=href,area=href,frame=src,input=src,form=fakeentry
user_agent => no value => no value

sysvmsg

sysvmsg support => enabled

sysvsem

sysvsem support => enabled

sysvshm

sysvshm support => enabled

tokenizer

Tokenizer Support => enabled

uploadprogress

uploadprogress support => enabled
Version => 2.0.2

Directive => Local Value => Master Value
uploadprogress.file.contents_template => /tmp/upload_contents_%s => /tmp/upload_contents_%s
uploadprogress.file.filename_template => /tmp/upt_%s.txt => /tmp/upt_%s.txt
uploadprogress.get_contents => 0 => 0

xml

XML Support => active
XML Namespace Support => active
libxml2 Version => 2.9.14

xmlreader

XMLReader => enabled

xmlrpc

XMLRPC extension version => 1.0.0RC3
core library version => xmlrpc-epi v. 0.54
author => Dan Libby
homepage => http://xmlrpc-epi.sourceforge.net
open sourced by => Epinions.com

xmlwriter

XMLWriter => enabled

xsl

XSL => enabled
libxslt Version => 1.1.34
libxslt compiled against libxml Version => 2.9.10
EXSLT => enabled
libexslt Version => 1.1.34

Zend OPcache

Opcode Caching => Up and Running
Optimization => Enabled
SHM Cache => Enabled
File Cache => Disabled
JIT => Disabled
Startup => OK
Shared memory model => mmap
Cache hits => 0
Cache misses => 0
Used memory => 67119616
Free memory => 457168384
Wasted memory => 0
Interned Strings Used memory => 4741512
Interned Strings Free memory => 12035704
Cached scripts => 0
Cached keys => 0
Max keys => 1048793
OOM restarts => 0
Hash keys restarts => 0
Manual restarts => 0

Directive => Local Value => Master Value
opcache.blacklist_filename => no value => no value
opcache.consistency_checks => 0 => 0
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => On => On
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => On => On
opcache.file_cache_only => Off => Off
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.interned_strings_buffer => 16 => 16
opcache.jit => no value => no value
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 0 => 0
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_prof_threshold => 0.005 => 0.005
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 1000000 => 1000000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 500 => 500
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFEBFFF => 0x7FFEBFFF
opcache.preferred_memory_model => no value => no value
opcache.preload => no value => no value
opcache.preload_user => no value => no value
opcache.protect_memory => Off => Off
opcache.record_warnings => Off => Off
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 0 => 0
opcache.revalidate_path => Off => Off
opcache.save_comments => On => On
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => On => On

zip

Zip => enabled
Zip version => 1.19.5
Libzip version => 1.7.3
BZIP2 compression => Yes
XZ compression => No
ZSTD compression => No
AES-128 encryption => Yes
AES-192 encryption => Yes
AES-256 encryption => Yes

zlib

ZLib Support => enabled
Stream Wrapper => compress.zlib://
Stream Filter => zlib.inflate, zlib.deflate
Compiled Version => 1.2.11
Linked Version => 1.2.11

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

Additional Modules

Module Name

Environment

Variable => Value
NVM_RC_VERSION =>  
DEPLOY_NAME => local
DDEV_WEBSERVER_TYPE => nginx-fpm
npm_config_cache => /mnt/ddev-global-cache/npm
IS_DDEV_PROJECT => true
PHP_DEFAULT_VERSION => 8.1
HOSTNAME => c-in-php-web
MH_SMTP_BIND_ADDR => 127.0.0.1:1025
SSH_AUTH_SOCK => /home/.ssh-agent/socket
NODE_EXTRA_CA_CERTS => /mnt/ddev-global-cache/mkcert/rootCA.pem
DOCKER_IP => 127.0.0.1
PGPASSWORD => db
DRUSH_ALLOW_XDEBUG => 1
MYSQL_PWD => db
DDEV_DOCROOT =>  
PWD => /var/www/html
PLATFORMSH_CLI_UPDATES_CHECK => 0
DDEV_FILES_DIR =>  
APACHE_SITE_TEMPLATE => /etc/apache2/apache-site.conf
GOARCH => amd64
DDEV_VERSION => v1.22.6
TZ =>  
HTTPS_EXPOSE => 443:80,8026:8025
DDEV_PRIMARY_URL => https://c-in-php.ddev.site
LINES => 35
DDEV_SITENAME => c-in-php
HOME => /home/gsartorelli
DRUSH_OPTIONS_URI => https://c-in-php.ddev.site
LANG => C.UTF-8
HISTFILE => /mnt/ddev-global-cache/bashhistory/c-in-php-web/bash_history
PHP_IDE_CONFIG => serverName=c-in-php.ddev.site
LS_COLORS => rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
COLUMNS => 115
DDEV_MUTAGEN_ENABLED => false
PGUSER => db
TERMINUS_CACHE_DIR => /mnt/ddev-global-cache/terminus/cache
DDEV_ROUTER_HTTP_PORT => 80
COMPOSER_PROCESS_TIMEOUT => 2000
NGINX_SITE_TEMPLATE => /etc/nginx/nginx-site.conf
DDEV_FILES_DIRS =>  
HTTP_EXPOSE => 80:80,8025:8025
NVM_DIR => /home/gsartorelli/.nvm
DDEV_PHP_VERSION => 8.1
DDEV_TLD => ddev.site
DDEV_HOSTNAME => c-in-php.ddev.site
DDEV_PROJECT => c-in-php
VIRTUAL_HOST => c-in-php.ddev.site
TERM => xterm
USER => gsartorelli
MYSQL_HISTFILE => /mnt/ddev-global-cache/mysqlhistory/c-in-php-web/mysql_history
DDEV_WEB_ENTRYPOINT => /mnt/ddev_config/web-entrypoint.d
CAROOT => /mnt/ddev-global-cache/mkcert
SHLVL => 1
COMPOSER_ALLOW_SUPERUSER => 1
NVM_CD_FLAGS =>  
BASH_ENV => /etc/bash.nointeractive.bashrc
DDEV_DATABASE => mariadb:10.4
PGDATABASE => db
XHPROF_OUTPUT_DIR => /tmp/xhprof
COMPOSER_CACHE_DIR => /mnt/ddev-global-cache/composer
DDEV_XDEBUG_ENABLED => false
DDEV_DATABASE_FAMILY => mysql
PGHOST => db
DDEV_COMPOSER_ROOT => /var/www/html
DOCROOT =>  
TERMINUS_HIDE_UPDATE_MESSAGE => 1
PATH => ~/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/www/html/vendor/bin:/var/www/html/bin:/var/www/html/vendor/bin
HOST_DOCKER_INTERNAL_IP =>  
DDEV_PROJECT_TYPE => php
DEBIAN_FRONTEND => noninteractive
DDEV_ROUTER_HTTPS_PORT => 443
GOOS => linux
_ => /usr/bin/php

PHP Variables

Variable => Value
$_SERVER['NVM_RC_VERSION'] => 
$_SERVER['DEPLOY_NAME'] => local
$_SERVER['DDEV_WEBSERVER_TYPE'] => nginx-fpm
$_SERVER['npm_config_cache'] => /mnt/ddev-global-cache/npm
$_SERVER['IS_DDEV_PROJECT'] => true
$_SERVER['PHP_DEFAULT_VERSION'] => 8.1
$_SERVER['HOSTNAME'] => c-in-php-web
$_SERVER['MH_SMTP_BIND_ADDR'] => 127.0.0.1:1025
$_SERVER['SSH_AUTH_SOCK'] => /home/.ssh-agent/socket
$_SERVER['NODE_EXTRA_CA_CERTS'] => /mnt/ddev-global-cache/mkcert/rootCA.pem
$_SERVER['DOCKER_IP'] => 127.0.0.1
$_SERVER['PGPASSWORD'] => db
$_SERVER['DRUSH_ALLOW_XDEBUG'] => 1
$_SERVER['MYSQL_PWD'] => db
$_SERVER['DDEV_DOCROOT'] => 
$_SERVER['PWD'] => /var/www/html
$_SERVER['PLATFORMSH_CLI_UPDATES_CHECK'] => 0
$_SERVER['DDEV_FILES_DIR'] => 
$_SERVER['APACHE_SITE_TEMPLATE'] => /etc/apache2/apache-site.conf
$_SERVER['GOARCH'] => amd64
$_SERVER['DDEV_VERSION'] => v1.22.6
$_SERVER['TZ'] => 
$_SERVER['HTTPS_EXPOSE'] => 443:80,8026:8025
$_SERVER['DDEV_PRIMARY_URL'] => https://c-in-php.ddev.site
$_SERVER['LINES'] => 35
$_SERVER['DDEV_SITENAME'] => c-in-php
$_SERVER['HOME'] => /home/gsartorelli
$_SERVER['DRUSH_OPTIONS_URI'] => https://c-in-php.ddev.site
$_SERVER['LANG'] => C.UTF-8
$_SERVER['HISTFILE'] => /mnt/ddev-global-cache/bashhistory/c-in-php-web/bash_history
$_SERVER['PHP_IDE_CONFIG'] => serverName=c-in-php.ddev.site
$_SERVER['LS_COLORS'] => rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
$_SERVER['COLUMNS'] => 115
$_SERVER['DDEV_MUTAGEN_ENABLED'] => false
$_SERVER['PGUSER'] => db
$_SERVER['TERMINUS_CACHE_DIR'] => /mnt/ddev-global-cache/terminus/cache
$_SERVER['DDEV_ROUTER_HTTP_PORT'] => 80
$_SERVER['COMPOSER_PROCESS_TIMEOUT'] => 2000
$_SERVER['NGINX_SITE_TEMPLATE'] => /etc/nginx/nginx-site.conf
$_SERVER['DDEV_FILES_DIRS'] => 
$_SERVER['HTTP_EXPOSE'] => 80:80,8025:8025
$_SERVER['NVM_DIR'] => /home/gsartorelli/.nvm
$_SERVER['DDEV_PHP_VERSION'] => 8.1
$_SERVER['DDEV_TLD'] => ddev.site
$_SERVER['DDEV_HOSTNAME'] => c-in-php.ddev.site
$_SERVER['DDEV_PROJECT'] => c-in-php
$_SERVER['VIRTUAL_HOST'] => c-in-php.ddev.site
$_SERVER['TERM'] => xterm
$_SERVER['USER'] => gsartorelli
$_SERVER['MYSQL_HISTFILE'] => /mnt/ddev-global-cache/mysqlhistory/c-in-php-web/mysql_history
$_SERVER['DDEV_WEB_ENTRYPOINT'] => /mnt/ddev_config/web-entrypoint.d
$_SERVER['CAROOT'] => /mnt/ddev-global-cache/mkcert
$_SERVER['SHLVL'] => 1
$_SERVER['COMPOSER_ALLOW_SUPERUSER'] => 1
$_SERVER['NVM_CD_FLAGS'] => 
$_SERVER['BASH_ENV'] => /etc/bash.nointeractive.bashrc
$_SERVER['DDEV_DATABASE'] => mariadb:10.4
$_SERVER['PGDATABASE'] => db
$_SERVER['XHPROF_OUTPUT_DIR'] => /tmp/xhprof
$_SERVER['COMPOSER_CACHE_DIR'] => /mnt/ddev-global-cache/composer
$_SERVER['DDEV_XDEBUG_ENABLED'] => false
$_SERVER['DDEV_DATABASE_FAMILY'] => mysql
$_SERVER['PGHOST'] => db
$_SERVER['DDEV_COMPOSER_ROOT'] => /var/www/html
$_SERVER['DOCROOT'] => 
$_SERVER['TERMINUS_HIDE_UPDATE_MESSAGE'] => 1
$_SERVER['PATH'] => ~/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/www/html/vendor/bin:/var/www/html/bin:/var/www/html/vendor/bin
$_SERVER['HOST_DOCKER_INTERNAL_IP'] => 
$_SERVER['DDEV_PROJECT_TYPE'] => php
$_SERVER['DEBIAN_FRONTEND'] => noninteractive
$_SERVER['DDEV_ROUTER_HTTPS_PORT'] => 443
$_SERVER['GOOS'] => linux
$_SERVER['_'] => /usr/bin/php
$_SERVER['PHP_SELF'] => 
$_SERVER['SCRIPT_NAME'] => 
$_SERVER['SCRIPT_FILENAME'] => 
$_SERVER['PATH_TRANSLATED'] => 
$_SERVER['DOCUMENT_ROOT'] => 
$_SERVER['REQUEST_TIME_FLOAT'] => 1706227885.3269
$_SERVER['REQUEST_TIME'] => 1706227885
$_SERVER['argv'] => Array
(
)

$_SERVER['argc'] => 0
$_ENV['NVM_RC_VERSION'] => 
$_ENV['DEPLOY_NAME'] => local
$_ENV['DDEV_WEBSERVER_TYPE'] => nginx-fpm
$_ENV['npm_config_cache'] => /mnt/ddev-global-cache/npm
$_ENV['IS_DDEV_PROJECT'] => true
$_ENV['PHP_DEFAULT_VERSION'] => 8.1
$_ENV['HOSTNAME'] => c-in-php-web
$_ENV['MH_SMTP_BIND_ADDR'] => 127.0.0.1:1025
$_ENV['SSH_AUTH_SOCK'] => /home/.ssh-agent/socket
$_ENV['NODE_EXTRA_CA_CERTS'] => /mnt/ddev-global-cache/mkcert/rootCA.pem
$_ENV['DOCKER_IP'] => 127.0.0.1
$_ENV['PGPASSWORD'] => db
$_ENV['DRUSH_ALLOW_XDEBUG'] => 1
$_ENV['MYSQL_PWD'] => db
$_ENV['DDEV_DOCROOT'] => 
$_ENV['PWD'] => /var/www/html
$_ENV['PLATFORMSH_CLI_UPDATES_CHECK'] => 0
$_ENV['DDEV_FILES_DIR'] => 
$_ENV['APACHE_SITE_TEMPLATE'] => /etc/apache2/apache-site.conf
$_ENV['GOARCH'] => amd64
$_ENV['DDEV_VERSION'] => v1.22.6
$_ENV['TZ'] => 
$_ENV['HTTPS_EXPOSE'] => 443:80,8026:8025
$_ENV['DDEV_PRIMARY_URL'] => https://c-in-php.ddev.site
$_ENV['LINES'] => 35
$_ENV['DDEV_SITENAME'] => c-in-php
$_ENV['HOME'] => /home/gsartorelli
$_ENV['DRUSH_OPTIONS_URI'] => https://c-in-php.ddev.site
$_ENV['LANG'] => C.UTF-8
$_ENV['HISTFILE'] => /mnt/ddev-global-cache/bashhistory/c-in-php-web/bash_history
$_ENV['PHP_IDE_CONFIG'] => serverName=c-in-php.ddev.site
$_ENV['LS_COLORS'] => rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
$_ENV['COLUMNS'] => 115
$_ENV['DDEV_MUTAGEN_ENABLED'] => false
$_ENV['PGUSER'] => db
$_ENV['TERMINUS_CACHE_DIR'] => /mnt/ddev-global-cache/terminus/cache
$_ENV['DDEV_ROUTER_HTTP_PORT'] => 80
$_ENV['COMPOSER_PROCESS_TIMEOUT'] => 2000
$_ENV['NGINX_SITE_TEMPLATE'] => /etc/nginx/nginx-site.conf
$_ENV['DDEV_FILES_DIRS'] => 
$_ENV['HTTP_EXPOSE'] => 80:80,8025:8025
$_ENV['NVM_DIR'] => /home/gsartorelli/.nvm
$_ENV['DDEV_PHP_VERSION'] => 8.1
$_ENV['DDEV_TLD'] => ddev.site
$_ENV['DDEV_HOSTNAME'] => c-in-php.ddev.site
$_ENV['DDEV_PROJECT'] => c-in-php
$_ENV['VIRTUAL_HOST'] => c-in-php.ddev.site
$_ENV['TERM'] => xterm
$_ENV['USER'] => gsartorelli
$_ENV['MYSQL_HISTFILE'] => /mnt/ddev-global-cache/mysqlhistory/c-in-php-web/mysql_history
$_ENV['DDEV_WEB_ENTRYPOINT'] => /mnt/ddev_config/web-entrypoint.d
$_ENV['CAROOT'] => /mnt/ddev-global-cache/mkcert
$_ENV['SHLVL'] => 1
$_ENV['COMPOSER_ALLOW_SUPERUSER'] => 1
$_ENV['NVM_CD_FLAGS'] => 
$_ENV['BASH_ENV'] => /etc/bash.nointeractive.bashrc
$_ENV['DDEV_DATABASE'] => mariadb:10.4
$_ENV['PGDATABASE'] => db
$_ENV['XHPROF_OUTPUT_DIR'] => /tmp/xhprof
$_ENV['COMPOSER_CACHE_DIR'] => /mnt/ddev-global-cache/composer
$_ENV['DDEV_XDEBUG_ENABLED'] => false
$_ENV['DDEV_DATABASE_FAMILY'] => mysql
$_ENV['PGHOST'] => db
$_ENV['DDEV_COMPOSER_ROOT'] => /var/www/html
$_ENV['DOCROOT'] => 
$_ENV['TERMINUS_HIDE_UPDATE_MESSAGE'] => 1
$_ENV['PATH'] => ~/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/www/html/vendor/bin:/var/www/html/bin:/var/www/html/vendor/bin
$_ENV['HOST_DOCKER_INTERNAL_IP'] => 
$_ENV['DDEV_PROJECT_TYPE'] => php
$_ENV['DEBIAN_FRONTEND'] => noninteractive
$_ENV['DDEV_ROUTER_HTTPS_PORT'] => 443
$_ENV['GOOS'] => linux
$_ENV['_'] => /usr/bin/php

PHP License
This program is free software; you can redistribute it and/or modify
it under the terms of the PHP License as published by the PHP Group
and included in the distribution in the file:  LICENSE

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any
questions about PHP licensing, please contact [email protected].

Unable to parse libnetsnmp

I attempted to generate code from ancient libnetsnmp and after resolving all missing header errors I finally got to:

PHP Notice:  Undefined variable: mainOffset in /app/vendor/ircmaxell/php-elf-symbolresolver/lib/Parser.php on line 79

Notice: Undefined variable: mainOffset in /app/vendor/ircmaxell/php-elf-symbolresolver/lib/Parser.php on line 79
PHP Fatal error:  Uncaught PHPCParser\Error: Syntax error, unexpected EOF( in /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php:235
Stack trace:
#0 /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php(104): PHPCParser\ParserAbstract->doParse()
#1 /app/vendor/ircmaxell/php-c-parser/lib/CParser.php(23): PHPCParser\ParserAbstract->parse(Array, Object(PHPCParser\Context))
#2 /app/vendor/ircmaxell/ffime/lib/FFIMe.php(101): PHPCParser\CParser->parse('/Users/greg/Dow...', Object(PHPCParser\Context))
#3 /app/test2.php(15): FFIMe\FFIMe->include('/Users/greg/Dow...')
#4 {main}
  thrown in /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php on line 235

Fatal error: Uncaught PHPCParser\Error: Syntax error, unexpected EOF( in /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php:235
Stack trace:
#0 /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php(104): PHPCParser\ParserAbstract->doParse()
#1 /app/vendor/ircmaxell/php-c-parser/lib/CParser.php(23): PHPCParser\ParserAbstract->parse(Array, Object(PHPCParser\Context))
#2 /app/vendor/ircmaxell/ffime/lib/FFIMe.php(101): PHPCParser\CParser->parse('/Users/greg/Dow...', Object(PHPCParser\Context))
#3 /app/test2.php(15): FFIMe\FFIMe->include('/Users/greg/Dow...')
#4 {main}
  thrown in /app/vendor/ircmaxell/php-c-parser/lib/ParserAbstract.php on line 235

The code I attempted to use:

(new FFIMe('/app/libnetsnmp/usr/lib/x86_64-linux-gnu/libnetsnmp.so.30'))
    ->include('/app/libc-dev/usr/include/x86_64-linux-gnu/gnu/stubs.h')
    ->include('/app/libc-dev/usr/include/x86_64-linux-gnu/sys/cdefs.h')
    ->include('/app/libc-dev/usr/include/stdio.h')
    ->include('/app/libnetsnmp-dev/usr/include/net-snmp/library/mib.h')
    ->include('/app/libnetsnmp-dev/usr/include/net-snmp/library/parse.h')
    ->codeGen('Test\NetSnmp', __DIR__ . '/test/NetSnmp.php')
;

Since I'm running on macOS I had to download all needed header files and unpack them. While that might pose a problem it actually makes sure I'm not mixing different versions. I used the bog-standard packages from Debian.

For your convince I included unpacked files with this issue. They're originating from amd64 debs from Jessie: https://github.com/ircmaxell/FFIMe/files/4600524/libs.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.