Hi there! I’m trying to make php and composer work. I have this in environment.systemPackages
:
(pkgs.php82.buildEnv {
extensions = ({ enabled, all }: enabled ++ (with all; [
xdebug
redis
]));
extraConfig = ''
memory_limit=2G
xdebug.mode=debug
'';
})
php82Extensions.redis
The problem is that while running php -m
correctly prints that redis extension is installed, composer
does not, because it uses a different php:
file $(which php)
prints the path/nix/store/igx8j4qjxy9jyj8kjyccwarnzqq5vsml-php-with-extensions-8.2.9/bin/php
cat $(which composer)
shows that it’s a wrapper for'/nix/store/lv4prxa52zifr54ws56iz3b9kdhs1b5w-php-with-extensions-8.2.9/bin/php' --add-flags '/nix/store/avqj0662f4gg2s875zlbbjajx6fm6bl0-php-composer-2.5.5/libexec/composer/composer.phar'
Note that the path to php is different. Is there any way to correct it on my side? I’d like to avoid having to install composer manually
That worked! Thank you! How did you know how to solve it?
I’m in the NixOS php maintainers team.
And how could I find out something like this?
Looks like you almost had it figured out.
composer
belongs to thephpPackages
set, an alias forphp.packages
, and any package under that set should use thephp
package you specify. This way you can customize thephp
configuration for various programs.I briefly looked at the documentation and I’m not sure that this is specifically mentioned. Unless I missed it this would be nice to add to our documentation.