我在 Vscode 中有 Devsense PHP 扩展,我的项目位于 docker 容器内。
我的 docker compose 中有名为“app”的服务,但像这样指定 php 可执行文件不起作用:
"php.executables": {
"my/sail-php8.2": "./docker/php/bin/php"
}
我的 ./docker/php/bin/php 里面是这样的:
docker compose exec app php "$@"
但是以某种方式使用此扩展运行 phpunit 测试将无法工作,因为输出一直显示此命令:
php -d display_errors=on /home/erstevn/Code/pilihjurusan/api/vendor/bin/phpunit --teamcity
这意味着我的 php 可执行文件路径不是他们正在使用的路径(他们在我的 Linux 中使用 php 二进制文件)。
那我该怎么办?
编辑
不知何故,我的 PHP 扩展无法在 docker 容器内找到我自定义的 php 版本
PHP extension started.
Couldn't resolve requested PHP version 'my/sail-php8.2' ... Using default 'php'.
Found PHP, version: 8.2.3, Xdebug: not loaded.
发现你必须为
php.executables
定义完整路径,所以我将其添加到用户settings.json
"php.executables": {
"custom-php-ver": "/home/(username)/(workspace)/api/docker/php/bin"
}
然后在你的
php/bin
文件中:
cd $(dirname $(readlink -f $0)) && cd ../../ && ./vendor/bin/sail php "$@"
我正在使用 sail,所以这将是 php 可执行文件。以防万一您可能会问
$(dirname $(readlink -f $0))
是做什么的,它只是引用正在执行的 php/bin 文件路径。
我不想使用
pwd
命令,因为 Devtools PHP 扩展将执行相对于您的主文件夹的路径,因此 pwd
将输出 /home/(username)
代替