我尝试将VSCode配置为在Docker容器中使用我们的php可执行文件。首先,我在macintosh上进行了尝试,一切正常。在工作中,我们使用Windows pc,但我无法正常工作。
工作区设置
"php.suggest.basic": false,
"php.executablePath": "C:\\Source\\stack\\.bin\\php.bat",
"php.validate.executablePath": "C:\\Source\\stack\\.bin\\php.bat",
"php.validate.run": "onSave",
"php.validate.enable": true
我尝试设置.sh
,.exe
或.bat
文件,但似乎都无法正常工作。
php.bat
@echo off
docker run -i stack_php php %*
php.sh
#!/bin/sh
docker run stack_php php "$@"
return $?
你们中的任何人都可以帮助我使它正常工作吗?我们想将IDE从PHPStorm更改为VSCode,但我们之所以能够这样做,是因为开发人员需要的所有内容都存储在Docker容器中。
答案 0 :(得分:3)
我在 Linux 上为多个 laravel 风帆项目想出了一个解决方案。
在 /usr/local/bin 上创建一个名为 'php' 的文件
sudo touch /usr/local/bin/php
使其可执行:
sudo chmod +x /usr/local/bin/php
编辑文件(使用 sudo)并粘贴以下代码:
path=$(printf '%s\n' "${PWD##*/}")
command="docker exec ${path}_laravel.test_1 php "$@""
echo "Running php on docker ${path}_laravel.test_1"
$command
现在只需在 laravel 帆项目中运行,例如 'php -v'。
答案 1 :(得分:1)
或者你可以使用插件:https://marketplace.visualstudio.com/items?itemName=henriiik.docker-linter
可以在他们的存储库中找到如何正确配置它的示例 https://github.com/henriiik/vscode-docker-linter/blob/master/playground-php/.vscode/settings.json
{
"php.validate.enable": false,
"docker-linter.php.enable": true,
"docker-linter.php.container": "php-web",
"docker-linter.php.machine": ""
}
答案 2 :(得分:0)
我遇到了完全相同的问题,只是找到了解决方案,但就我而言,我在Linux的Windows子系统下工作,而不是Windows,因此我不确定是否/如何进行修改。您可以在这里了解更多信息:set PHP path from host to docker container
对我来说,似乎可以解决问题的部分是将“包装器”移动到/usr/local/bin
,然后将其设置为工作区的php.validate.executablePath(您也可以将其设置在Remote WSL级别,但就我而言,我可能会使用多个版本的PHP进行开发)
希望对您有所帮助!
更新: 我只是看到评论中的某人正在Windows中工作! 他们建议放
docker exec -i your_container_name php %*
进入.bat文件;查看您已完成的操作,区别似乎是使用exec
而不是run