在启动我的 ddev 项目并使用 Web 浏览器点击它后,我突然开始收到“ngnix 403 Forbidden / directory index of "/var/www/html/" is forbidden' 或只是 '403 Forbidden',我想不通为什么。这工作得更早。
这是一个后续问题如何在ddev中创建和加载第二个数据库?.它是关于自动执行该任务.
一个用例就是从另一个MySQL数据库开始向Drupal迁移,并在迁移时与其他人合作.如果数据库名称可以由ddev设置,则其他开发人员可以自动创建数据库,并可以使用已知值将其他数据库添加到其settings.local.php中.
问题:让基于 Behat Drupal 扩展的测试在 ddev 容器内工作。这包括向现有配置添加单独的 selenium 容器、能够运行 Behat 测试以及能够引用web主机容器。
在Windows的Docker容器内使用PHP(例如,使用DDEV)时,在容器内创建的符号链接(例如,由作曲家使用)似乎不适用于PHP的文件流。
想象下面的PHP代码
<?php
mkdir('demo-base-directory');
symlink('demo-base-directory', 'demo-symbolic-link');
var_dump(glob('demo-*', GLOB_ONLYDIR));
Run Code Online (Sandbox Code Playgroud)
如果在容器内执行,则仅输出demo-base-directory,但是demo-symbolic-link会丢失(该示例在Docker容器内的Linux / Unix系统上按预期工作)
array(1) {
[0]=>
string(19) "demo-base-directory"
}
Run Code Online (Sandbox Code Playgroud)
当查看主机系统中的符号链接时(例如cat demo-symbolic-link在Windows PowerShell中使用),它显示
XSym
0019
0df68e8650ddca993c28277a5cfa3dcd
demo-base-directory
Run Code Online (Sandbox Code Playgroud)
Docker for Windows还有其他关于符号链接仿真的报告-我无法使用fgets或file_get_contents而是针对提到的glob调用为文件重现此行为,请参见
共享卷安装在Windows主机系统上的基于Linux的Docker容器中,安装方式为Samba / CIFS,如下所示:
/ var / www / html上的//10.0.75.1/C类型cifs(rw,relatime,vers = 3.02,sec = ntlmsspi,cache = strict,用户名= olly,domain = OLIVERHADERB9D8,uid = 0,noforceuid,gid = 0 ,noforcegid,addr = 10.0.75.1,file_mode = 0755,dir_mode = 0777,iocharset = utf8,nounix,serverino,mapposix,nobrl,mfsymlinks,noperm,rsize = 1048576,wsize = 1048576,echo_interval = 60,actimeo = …
拥有一个包含多个 ddev 项目和共享 Composer 包文件夹的 monorepo,我想将其他文件夹安装到 Web 容器中。
我正在尝试开发一组 TYPO3 扩展并同时使用 v9 和 v10 测试它们,为此我在一个 git 存储库和一个包含我的扩展的包文件夹中创建了两个 ddev 项目。不过,相对路径 ddev Composer 将看不到我的包文件夹,因为它位于挂载根目录之外。符号链接不能跨 docker 边界工作。所以我想使用 docker 工具将附加目录安装到 ddev Web 容器中。
有什么好的方法吗?
目前,DDEV Web 容器未附带 nvm(节点版本管理器)。如何通过 DDEV config.yaml 文件添加和使用它?
我有一个使用 DDEV 运行 PHP 8.1 实例的项目。我需要向包中引入 pdo_sqlsrv 扩展,因此我在 .ddev/web-build/ 目录中添加了一个 Dockerfile,用于安装所需的包,并复制一个 bash 脚本,然后使用 sudo 运行该脚本来安装剩余的依赖项。
bash 脚本获取 microsoft gpg 密钥,从packages.microsoft.com/config/$OS/$VERSION/prod.list 中提取 apt 源列表(其中 OS 和 Version 是相当于 debian 和 11 的变量),然后继续执行安装 msodbcsql17、unixodbc 和 unixodbc-dev
最后,bash 脚本运行 pecl install pdo_sqlsrv 命令。
一切都按预期工作,除了 pdo_sqlsrv 的构建由于缺少文件 /usr/lib/x86_64-linux-gnu/libltdl.la 而失败 我已经搜索了我能找到的所有内容,并且无法理解为什么这个 libltdl.la 文件是丢失的。我验证了 libltdl-dev (2.4.6-15) 软件包已安装。它有其他预期的文件,如 libltdl.a 和 libltdl.so 等 - 只是不是 .la 文件。
为了防止项目开发陷入停滞,我拼命尝试将 libltdl.la 文件从本地 WSL2 Ubuntu 20.04 系统复制到我的 .ddev/web-build/ 目录中,并将以下命令添加到我的 Dockerfile 中:
COPY libltdl.la /usr/lib/x86_64-linux-gnu/
这“解决”了问题,允许 pecl 安装完成,并且生成的 pdo_sqlsrv 扩展被正确编译并按预期加载。然而,为什么这个 .la 文件丢失,以及如何“正确”确保它安装,仍然是一个我希望我能理解答案的问题。 …
我需要在我的 ddev 项目上运行 Composer,但我的 Windows 计算机上没有它。例如,项目需要composer install启动前。我如何在这种环境下使用 Composer,尤其是在 Windows 上?
我正在尝试使用容器中的bash做一些复杂的事情,ddev exec似乎无法让它工作.例如,ddev exec cd /var/tmp导致出现大错误消息
Failed to execute command [cd /var/tmp]: Failed to run docker-compose [-f /Users/rfay/workspace/d8git/.ddev/docker-compose.yaml exec -T web cd /var/tmp], err='exit status 126', stdout='OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"cd\": executable file not found in $PATH": unknown
Run Code Online (Sandbox Code Playgroud)
并尝试使用"||" 并且"&&"或带有">"的shell重定向也不起作用.
我正在 Bedrock WordPress 网站上运行 DDEV nginx 服务器并尝试加载 Browsersync 的代码片段。
gulpfile.js browserSync 任务:
browserSync.init({
proxy: {
target: "https://web.ddev.site"
},
https: {
key: "/Users/user/Library/Application Support/mkcert/rootCA-key.pem",
cert: "/Users/user/Library/Application Support/mkcert/rootCA.pem"
}, open:false});
Run Code Online (Sandbox Code Playgroud)
浏览器不加载代码片段并打印以下错误:
(index):505 GET https://web.ddev.site:3000/browser-sync/browser-sync-client.js?v=2.26.7 net::ERR_SSL_KEY_USAGE_INCOMPATIBLE
我怎样才能让这两件事一起工作?在 DDEV 之前,我使用的是 MAMP,但 DDEV 的性能要好得多,我想切换到这个应用程序。感谢帮助。
ddev ×10
docker ×2
browser-sync ×1
bullseye ×1
composer-php ×1
debian ×1
drupal ×1
monorepo ×1
nginx ×1
php ×1
php-8.1 ×1
samba ×1
selenium ×1
typo3 ×1
windows-10 ×1