docker中的VisualStudio代码PHP可执行文件路径

时间:2018-11-27 14:28:56

标签: php docker visual-studio-code

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

3 个答案:

答案 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