15

我尝试将 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 容器中。

4

3 回答 3

10

我在 Linux 上为多个 laravelsai 项目提出了一个解决方案。

在 /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 Sai 项目中运行,例如,'php -v'。

于 2021-02-25T21:02:23.383 回答
6

或者您可以为此使用插件: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": ""
}
于 2021-01-20T09:48:42.570 回答
0

我遇到了完全相同的问题,并且刚刚找到了解决方案,但就我而言,我在 Linux 的 Windows 子系统下工作,而不是直接的 Windows,所以我不确定它是否/如何适应。您可以在此处阅读更多相关信息:设置 PHP 路径从主机到 docker 容器

对我来说,似乎解决问题的部分是将“包装器”移动到/usr/local/bin,然后将其设置为工作区的 php.validate.executablePath (您也可以将其设置为远程 WSL 级别,但在我的情况下,我可能会使用多个版本的 PHP 进行开发)

我希望这对你有帮助!

更新:我刚刚在评论中看到有人在 Windows 中工作!他们建议把

docker exec -i your_container_name php %*

进入 .bat 文件;查看您已经完成的工作,差异似乎是使用exec而不是run

于 2020-07-22T21:44:15.757 回答