| 21 Nov 2023 |
Gaƫl Reyrol | * Honestly I am not quite fan of the embedded thing that Kevin is trying to do with FrankenPHP, I don't think it is the responsibility of FrankenPHP to embed it, nor Apache and Nginx. It also adds a lot of compilation / cross compilation complexity, so maybe it is right way or at least a not so bad alternative. | 07:00:25 |
w | In reply to @drupol:matrix.org w: Let us know how we can help. Had no time to work on it. | 07:25:31 |
| Adam Stotesbury joined the room. | 07:37:15 |
Adam Stotesbury | I'm currently facing an issue with registering the php74Extensions.redis in my NixOS environment, and I'm seeking some guidance to resolve it. I'm able to get xdebug to correctly register with the zend_extension = "${php.php74Extensions.xdebug}/lib/php/extensions/xdebug.so" and I've can see the redis.so exists in the nixstore path /nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/ for the php74Extensions.redis package. However phpinfo fails to register the redis package (xdebug is showing as expected and changed to the config or removing the xdebug.so entry reflect the phpinfo.)
Here's a brief overview of my configuration:
configuration.nix:
{ config, pkgs, lib, ... }:
let
php = import
(builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/2766f77c32e171a04d59b636a91083bae862274e.tar.gz"; #7.4.29 php
})
{ };
in
{
imports =
[
# Include the results of the hardware scan.
./hardware-configuration.nix
(import /home/stotes/nix/server/nginx-php.nix { inherit config php lib pkgs; })
];
# ... continues
}
nginx-php.nix:
{ config, pkgs, lib, php, ... }:
{
environment.systemPackages = with php; [
php.php74
php.phpPackages.composer
php.php74Extensions.pdo
php.php74Extensions.redis
php.php74Extensions.xdebug
];
services.phpfpm.phpOptions = ''
date.timezone = Australia/Brisbane
extension = "${php.php74Extensions.redis}/lib/php/extensions/redis.so"
zend_extension = "${php.php74Extensions.xdebug}/lib/php/extensions/xdebug.so"
'';
}
nix-created php.ini entries:
date.timezone = Australia/Brisbane
extension = "/nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so"
zend_extension = "/nix/store/hsprflbbk5a0hqaysm7vaspqmn2l1nyg-php-xdebug-3.0.4/lib/php/extensions/xdebug.so"
Despite my configuration, the php74Extensions.redis package is not registering as expected. I've followed the NixOS documentation and community forums but couldn't find a solution. Can someone please guide me on what might be causing this issue or any steps I can take to troubleshoot it further?
Any help or insights would be greatly appreciated. Thank you in advance for your assistance!
| 07:38:04 |
Pol | Do you have any issue in the log while loading PHP (including the redis extensions) ? | 07:42:22 |
| rikudou@lemmings.world joined the room. | 07:44:01 |
rikudou@lemmings.world | This is my (working) config. Unless something changed in between versions, you can adapt it to php74:
environment.systemPackages = with pkgs; let
php82 = pkgs.php82.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
xdebug
redis
xsl
ffi
]));
extraConfig = ''
memory_limit=8G
xdebug.mode=debug
'';
};
in
[
php82
php82.packages.composer
php82Extensions.redis
php82Extensions.xsl
];
| 07:47:26 |
Adam Stotesbury | In reply to @drupol:matrix.org Do you have any issue in the log while loading PHP (including the redis extensions) ? NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so' (tried: /nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so (/nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so: undefined symbol: php_session_create_id), /nix/store/nx5jg5b1zkljhzxn6g9b6sjkj9539mhg-php-7.4.29/lib/php/extensions//nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so.so (/nix/store/nx5jg5b1zkljhzxn6g9b6sjkj9539mhg-php-7.4.29/lib/php/extensions//nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 | 07:50:52 |
Pol | /nix/store/hnjkll3gvx7nm8i7vm1mc1cpa4b1p3lh-php-redis-5.3.4/lib/php/extensions/redis.so: undefined symbol: php_session_create_id)
| 07:51:28 |
Pol | Weird. | 07:51:34 |
Pol | I would suggest to use this project: https://github.com/fossar/nix-phps | 07:51:47 |
Pol | It contains old versions of PHPs | 07:52:01 |
Pol | You might have better chance with it | 07:52:06 |
Adam Stotesbury | https://github.com/phpredis/phpredis/issues/470
According to this thread loading session.so before redis.so can resolve the issue. | 07:54:39 |
Pol | Oooh indeed ! | 07:55:13 |
Pol | I forgot about this | 07:55:19 |
Pol | Try and let me know | 07:55:23 |
rikudou@lemmings.world | Adam Stotesbury: Have you tried using my config? | 07:55:39 |
Adam Stotesbury | In reply to @rikudou:lemmings.world
This is my (working) config. Unless something changed in between versions, you can adapt it to php74:
environment.systemPackages = with pkgs; let
php82 = pkgs.php82.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
xdebug
redis
xsl
ffi
]));
extraConfig = ''
memory_limit=8G
xdebug.mode=debug
'';
};
in
[
php82
php82.packages.composer
php82Extensions.redis
php82Extensions.xsl
];
Thanks for sharing. I'll give this a crack | 07:56:16 |
Adam Stotesbury | In reply to @rikudou:lemmings.world Adam Stotesbury: Have you tried using my config? Not quite yet. Will do shortly | 07:56:25 |
rikudou@lemmings.world | Here's a fully working shell.nix with what you want, it can easily.3 .. | 07:56:37 |
rikudou@lemmings.world | * Here's a fully working shell.nix with what you want, it can easily be adapted:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages;
let
custom = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/0e4ade244d0f1b01a378aa58c235a1576778c1fd) {};
php74 = pkgs.php.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
redis
xdebug
]));
extraConfig = ''
xdebug.mode=debug
date.timezone=Australia/Brisbane
'';
};
in
[
php74
custom.phpPackages.composer
custom.php74Extensions.pdo
custom.php74Extensions.redis
custom.php74Extensions.xdebug
];
}
| 07:56:59 |
rikudou@lemmings.world | * Here's a fully working shell.nix with what you want, it can easily be adapted to configuration.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages;
let
custom = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/0e4ade244d0f1b01a378aa58c235a1576778c1fd) {};
php74 = pkgs.php.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
redis
xdebug
]));
extraConfig = ''
xdebug.mode=debug
date.timezone=Australia/Brisbane
'';
};
in
[
php74
custom.phpPackages.composer
custom.php74Extensions.pdo
custom.php74Extensions.redis
custom.php74Extensions.xdebug
];
}
| 07:57:11 |
Adam Stotesbury | Thank you! | 07:57:33 |
rikudou@lemmings.world | * Here's a fully working shell.nix with what you want, it can easily be adapted to configuration.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages;
let
custom = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/1d8b8365a02efbf668311dc9db06cb98d49e7302) {};
php74 = pkgs.php74.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
redis
xdebug
]));
extraConfig = ''
xdebug.mode=debug
date.timezone=Australia/Brisbane
'';
};
in
[
php74
custom.phpPackages.composer
custom.php74Extensions.pdo
custom.php74Extensions.redis
custom.php74Extensions.xdebug
];
}
| 07:57:49 |
rikudou@lemmings.world | * Here's a fully working shell.nix with what you want, it can easily be adapted to configuration.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages;
let
custom = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/0e4ade244d0f1b01a378aa58c235a1576778c1fd) {};
php74 = pkgs.php.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
redis
xdebug
]));
extraConfig = ''
xdebug.mode=debug
date.timezone=Australia/Brisbane
'';
};
in
[
php74
custom.phpPackages.composer
custom.php74Extensions.pdo
custom.php74Extensions.redis
custom.php74Extensions.xdebug
];
}
| 07:58:19 |
rikudou@lemmings.world | * Here's a fully working shell.nix with what you want, it can easily be adapted to configuration.nix:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
nativeBuildInputs = with pkgs.buildPackages;
let
custom = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/1d8b8365a02efbf668311dc9db06cb98d49e7302) {};
php74 = custom.php74.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
redis
xdebug
]));
extraConfig = ''
xdebug.mode=debug
date.timezone=Australia/Brisbane
'';
};
in
[
php74
custom.php74Packages.composer
custom.php74Extensions.pdo
custom.php74Extensions.redis
custom.php74Extensions.xdebug
];
}
| 07:59:59 |
rikudou@lemmings.world | I've updated it a bit, there was a mistake | 08:00:32 |
rikudou@lemmings.world | Also, you might want to use a project of mine for getting older versions, for example: https://history.nix-packages.com/search?packageName=php74
It should have the latest version the package is found in, meaning the newest available dependencies for each version | 08:04:31 |
Adam Stotesbury | Thank you! This is exactly what I was looking for earlier, amazing! | 08:05:54 |