使WordPress成为核心

开的12年前

关闭4个月前

上次修改时间3个月前

#21077 关闭 增强 (固定的)

添加对多站点站点地址中自定义端口的支持

报告人: djzone的个人资料 djzone公司 所有者: 约翰百亿的简介 约十亿
里程碑: 6.6 优先: 正常的
严重程度: 正常的 版本: 3.4
组件: 引导/加载 关键词: 需要-补丁
重点: 多站点 复写的副本:

描述

此修补程序使MultiSite能够与自定义端口一起使用,该端口必须在WP-config.php中定义为WP_custom_port。

附件(6)

多站点客户端口匹配(945字节)-由添加djzone公司 12年前.
多站点自定义端口修补程序
ms-settings_201308012128.php(1.4 KB)-由添加F J凯撒 12年前.
ms-settings_201201082128.补丁(1.4 KB)-由添加F J凯撒 12年前.
忽略以前每次事故添加的补丁.php扩展
15936.5.差异(4.6 KB)-由添加杰里米弗特 4年前.
从15936开始定制端口号的前期工作
截图2024-05-05,22.05.41.png(119.0 KB)-由添加spacedmonkey(空格键) 5个月前.
站点表
截图2024-05-05,22.05.53.png(143.7 KB)-由添加spacedmonkey(空格键) 5个月前.
博客表格

将所有附件下载为:.zip文件

更改历史记录(79)

@djzone公司
12年以前

多站点自定义端口修补程序

#1 @涂鸦
12年以前

我们不能对这些东西使用parse_url()吗?

#2 @珍珠蛋白
12年以前

是 啊。ms-settings.php可以代表擦洗。

我一直不知道为什么在多站点中阻止自定义端口。在3.0版本的合并过程中,我们试图清理东西,但我们尽量不经常问“为什么”,因为一切都会变成一个兔子洞。

我们可能应该查看MU中的历史记录,然后只允许自定义端口工作,而不需要常量。

#3 @伊普斯特努
12年以前

  • 复写的副本 伊普斯特努补充

#4 @伊普斯特努
12年以前

看起来它被硬编码为使用80。

http://mu.wordpress.org/forums/topic/14587

#5 @F J凯撒
12年以前

  • 复写的副本 24-7@…补充
  • 严重程度已从更改正常的专业

+1刚刚遇到一种情况,即在本地MU设置中,我无法使用默认端口:80/:443。现在我只剩下一个核心黑客了。

#6 @F J凯撒
12年以前

相关的#15936

#7 @思维控制
12年以前

  • 复写的副本 思维控制补充

#8 @F J凯撒
12年以前

  • 关键词 需求-测试 开发人员反馈补充

带parse_url的Scribus想法很可能是未来的发展方向。接下来的补丁将

  • 也需要缺席$_服务器['HTTP_HOST']进入帐户并切换到$_服务器['SERVER_NAME']可靠性和这些边缘情况
  • 通过以下方式获取域解析url()PHP_URL_PATH(路径)
  • 仍然回到默认值wp_die()-消息,以防不知怎么无法摆脱端口

补丁需要更严格的测试。

@F J凯撒
12年以前

忽略以前每次事故添加的补丁.php扩展

#9 @F J凯撒
12年以前

  • 关键词 关闭补充;has-patch接口 需求-测试 开发人员反馈远离的

关闭以支持#15936因为它似乎也解决了IPv6问题。正在此处添加新修补程序。

#10 @谢尔盖·比留科夫
12年以前

  • 关键词 关闭远离的
  • 里程碑 等待审查删除
  • 分辨率设置为重复
  • 状态已从更改新的关闭

的副本#15936.

这张票是在松弛(Slack)jeremyfelt的《core-multisite》。查看日志.


4年以前

#12 @杰里米弗特
4年以前

  • 组件已从更改多点会议引导/加载
  • 焦点 多站点补充
  • 关键词 需要-补丁 需要单元测试补充
  • 里程碑设置为未来版本
  • 分辨率 重复删除
  • 严重程度已从更改专业正常的
  • 状态已从更改关闭重新打开的
  • 总结已从更改MultiSite的自定义端口修补程序添加对多站点站点地址中自定义端口的支持

@杰里米弗特
4年以前

从15936开始定制端口号的前期工作

#13 @杰里米弗特
4年以前

我重新打开了这张票,因为它是第一张以复制品形式关闭的票#15936,我们现在已将其作为单独的重点领域关闭。另请参见#42993,可以视为该票据的副本。我还附上了来自的最新补丁#15936,15936.5.差异,它处理一些端口号更改和一些不必要的IPv6更改。

需要注意/决定的几件事:

现在最好在默认的WordPress本地开发环境中进行测试,该环境使用本地主机:8889作为其地址,并需要端口号。

这张票是在松弛(Slack)johnbillion的core-multisite。查看日志.


4年以前

这张票是在松弛(Slack)jeremyfelt的《core-multisite》。查看日志.


4年以前

这张票是在松弛(Slack)在spacedmonkey的core-multisite中。查看日志.


4年以前

这张票是在松弛(Slack)在spacedmonkey的core-multisite中。查看日志.


4年以前

#18 随访: @约翰詹姆斯·雅各比
4年以前

应该允许所有端口号,还是应该有一个过滤列表?

我认为应该允许所有端口号。

故事时间。昨天,我不得不重新使用MAMP PRO处理本地事务。它使Apache和Nginx web服务器都可用http协议https(https)方案,都在不同的端口上。根据我的/etc/hosts设置,根据要筛选的WordPress常量和选项,根据我正在处理或测试的内容,在这么多不同的端口上使用WordPres非常方便。

MAMP有自己的默认端口,但您可以轻松使用80/443/81/7443或任何您真正想要的端口。如果您还运行Docker/Lando,或运行Local,或Valet等,尤其是在环境之间转换时,使用任何端口号的功能非常有用。

我认为它对于运行VVV之类的多个实例也非常有用。

最后,端口是有效的URL段,即使它们看起来很奇怪。国际海事组织,这意味着有一些固有的义务支持他们。

#19 回复: 18 @杰里米弗特
4年以前

回复约翰詹姆斯·雅各比:

应该允许所有端口号,还是应该有一个过滤列表?

我认为应该允许所有端口号。

我认为这很有道理,特别是考虑到这个故事。也就是说,如果有办法#52088通过只支持WordPress用于其开发环境的端口,这至少是一个开始。

我没有积极参与这张罚单,但我想澄清我的最后一句话,以防妨碍进一步的进展。15936.5.差异是另一张罚单上的一些前期工作,我认为它没有解决这方面的实际需要。不过,它确实提供了一些先前的补丁技术。

目前这张票(IMO)缺少的是:

  • 如何在引导/加载中识别和管理自定义端口,以及如何在网络管理UI中使用网络/站点(可能?可能不)管理自定义端口的建议解决方案。
  • 如何在标准WP构建过程中测试解决方案。单元测试,端到端测试?
  • 实现上述内容的代码。
  • 如何在本地测试解决方案。(也许只是因为开发环境工作正常!):)

一旦有了本地环境,我很乐意帮助进行测试,但我现在没有创建解决方案所需的带宽。:)

#20 @spacedmonkey(空格键)
4年以前

我认为问题是,我们是否正式支持自定义端口,在注册站点时添加输入并将端口号保存在某处(站点元数据)。然后更改引导以支持任何端口。

或者我们只是提供了足够的过滤器和钩子来让开发人员自己添加支持,就像域映射一样。

我会推荐第二门课程,我甚至会编写一个插件,让开发人员可以这样做。

我认为当前的补丁15936.5.差异确实解决了这个问题,并且允许开发人员做他们想做的事情。

目前,要添加自定义端口,您必须添加sunrise.php,然后添加如下所示的过滤器。

add_filters('allowed_multisite_ports',函数($current){$current[]=':81';返回$current;});

我认为我们还需要在引导程序中使用一些东西来通过端口查找站点。

这当然是工作,但并不完全适合使用。也许我们可以用PHP常量代替过滤器。

定义(“WP_ALLOWED_PORTED”,“80,443”);

有一次注意到,将数组值设为常量并不是一个好主意。所以我们可以用wp_parse列表.

所以当我们使用它时,它看起来像这样。

$allowed_ports=wp_parse_list(wp_allowed_PORTED);

思想@jeremyfelt@johnjamesjacoby

这张票是在PR编号1963WordPress/WordPress-develop开发通过寒风.


3年以前
#21

  • 关键词 has-patch接口补充;需要-补丁远离的

修复补丁15936.5.diff中的错误,在ms-site.php中重新添加端口号

Trac票:https://core.trac.wordpress.org/tickt/21077

#22 @PerS公司
3年以前

请注意,拉请求是我的第一个补丁:)

您可以使用VS Code devcontainer在本地测试它作为零件提供我的插件。A类如何操作也可以使用。

这张票是在松弛(Slack)在soderlind的core-multisite中。查看日志.


3年以前

寒风对发表了评论PR编号1963:


3年以前
#24

@costdev我正在调查单元测试失败的原因。

寒风对发表了评论PR编号1963:


3年以前
#25

@costdev添加了新的单元测试。

这张票是在松弛(Slack)在spacedmonkey的核心提交器中。查看日志.


3年以前

#27 @Clorith公司
3年以前

我将添加一个注意事项,带有自定义端口的多站点似乎可以开箱即用,但需要您编辑wp_站点数据库条目,并添加:<端口>你自己。这是因为多站点中的“保存时清理”功能将被删除:给你留下了一个网址<端口>而不是url:<port>如果使用接口,则为db条目。

我不确定除了这一个之外是否还有其他问题,如果有任何超出back-compat的问题,那么这里是概述它们的地方,但从一些初步测试来看,似乎更新过滤器以允许:[0-9]+保存时通过消毒剂不应该破坏任何东西,并为用户的内心愿望打开自定义端口🤔

#28 @spacedmonkey(空格键)
2年以前

我又花了几个小时处理这个问题,仍然发现问题。如我所见,问题在于将自定义端口存储在何处。如果将其存储为域的一部分,那么当域不再是域而是域+端口时,整个核心都会出现问题。我必须进行大量更改才能使多站点甚至引导。存储端口号的最佳位置是site(blog)meta。这会使端口号在meta中靠近站点,但不会破坏任何内容。

我原型化了它的工作原理sunrise.php滴管。

之所以难以测试,是因为缺少这种过滤器。

$allowed_ports=应用过滤器('allowed_multisite_ports',数组(':80',':443'));

为了帮助第三方制定自己的解决方案,我建议使用一个新的票证来添加此过滤器。这样,在我们处理另一个解决方案时,此功能不会被阻止。

这张票是在松弛(Slack)由ironprogrammer进行核心测试。查看日志.


19个月以前

#30 @铁编程器
19个月以前

#57748被标记为副本。

#31 @铁编程器
19个月以前

#42993被标记为副本。

#32 @朱尔斯·科莱
13个月以前

我的多站点网络正在上运行本地主机:8082。使用此代码,目前一切似乎都运行良好:

<?php(电话)
添加筛选器( 'wp_normalize_site_data', 功能( $数据 ) {
    $数据['域'] = str_替换('8082', ':8082', $数据['域']);
    返回 $数据;
}, 50, 1 );

我已经在mu-plugins中添加了这个,但我想它可以放在您的主题中函数.php或常规插件。

我可以通过wp管理员或通过wpmu_create_blog()没有任何问题。

请注意,如果您的域名为domain8082.com或类似名称,则此代码将不起作用:)

上次编辑时间13个月前通过朱尔斯·科莱(以前的)(差异)

这张票是在采购订单号5675WordPress/WordPress-develop开发通过@遗忘和谐.


10个月以前
#33

  • 关键词 has-unit-测试补充;需要单元测试远离的

这应涵盖使用带有端口的多站点时中断的所有区域。

Trac票:https://core.trac.wordpress.org/tickt/21077

这张票是在采购订单号5675WordPress/WordPress-develop开发通过@遗忘和谐.


10个月以前
#34

这应涵盖使用带有端口的多站点时中断的所有区域。

Trac票:https://core.trac.wordpress.org/tickt/21077

#35 @遗忘和谐
10个月以前

我在向开发环境中添加多站点时遇到了这个问题,并进行了修复。我仔细查看了所有多站点代码,以找到端口存在会导致问题的任何实例,并修复了它们。让我们越过终点线!

这张票是在松弛(Slack)通过遗忘和谐进入核心。查看日志.


8个月以前

@遗忘和谐对发表了评论采购订单号5675:


8个月以前
#38

谢谢@JJJ,有什么建议吗?我在Slack上没有收到任何#core中的人的回复,而且我似乎在Trac票证上也没有收到任何回复。

这张票是在松弛(Slack)通过遗忘和谐进入核心。查看日志.


8个月以前

@德斯罗什对发表了评论采购订单号5675:


8个月以前
#40

👋 @遗忘和谐感谢您的努力!

我只是想承认我已经看到了这一点,但我不能保证我有能力在接下来的几周里看一看。我知道这很令人沮丧,但一个特定的改变需要几个月或几年的时间才能得到所需的反馈和测试,这并不罕见。特别是因为之前活跃在门票上的一些贡献者目前没有赞助贡献时间。

为了清楚起见,我推荐一件事。如果你能浏览一下现有的问题,并简要记录下你对如何解决这些问题的思考,这将有助于有人深入了解票务历史。

这张票是在松弛(Slack)乔麦吉尔的《核心》。查看日志.


8个月以前

#42 @约十亿
6个月以前

  • 关键词 早期的补充
  • 里程碑已从更改未来版本6.6
  • 所有者设置为约十亿
  • 状态已从更改重新打开的审查

@约十亿美元对发表了评论采购订单号5675:


6个月以前
#43

@ObliviousHarmony我进行了一些更改,以使PHPUnit测试在这个PR上运行一份失败的工作这是一个新引入的作业,用于测试包含端口号的域名的单站点安装。故障仅由wp-api生成.js夹具正在更新。不确定最佳解决方案。

@遗忘和谐对发表了评论采购订单号5675:


6个月以前
#44

谢谢@johnbillion!是的,这确实很棘手。我不想在写入文件之前删除端口,但我看不到任何真正的替代方法。无论如何,修改这个生成的测试夹具感觉是个坏主意。你对扩大行动步骤以允许某些情况下的某些差异有何看法?这个矩阵相当广泛,我不知道在这种情况下出现例外会有那么糟糕。

我添加这个测试是因为(正如这篇PR所示)有一组测试会中断需要更新的端口。使用端口进行测试以确保一切正常工作似乎是明智的。然而,为了推动这一进程,退出该测试可能是有意义的。测试通过了,所以我认为这至少是一个很好的公关指标。这个问题

#45 @约十亿
5个月以前

我要承诺公关5675为Multisite引入端口号支持。在此之前,请注意:

  • 上面讨论中的一个问题是,在数据库中的什么位置存储端口号,以及如果它存储在wp_blogs.domain(wp_blogs.域)字段。如果你看一下PR5675,你会发现实际上核心中很少有地方需要更改以支持Multisite上的端口号,而大多数更改都是小的调整。当然没有什么是根本性的。将端口号存储在其他位置,例如存储在站点元数据中,并不会否定这些更改的需要,事实上会增加额外的复杂性。这就是为什么我支持将端口号包含在wp_blogs.domain(wp_blogs.域).
  • 测试套件已经更新,允许所有测试在URL中有端口的网站上运行(通过本地_WP_TESTS_DOMAIN环境变量)。结果发现并修复了一些端口处理方面的错误。不要忘记始终使用WP_TESTS_DOMAIN(工作包测试域)测试中的常量而不是硬编码示例.org.
  • 此修复程序#52088也允许本地开发环境运行多站点安装。设置本地_多功能环境变量到真的在配置期间启用此功能。

@遗忘和谐对发表了评论采购订单号5675:


5个月以前
#46

感谢您的评论,并帮助我越过终点线@johnbillion,这周我已经被淹没了:微笑:

很高兴能越过终点线。我计划使用它在WooCommerce中运行E2E测试碎片,而无需启动一系列相同的环境。更快的本地和CI测试:微笑:

#47 @约十亿
5个月以前

  • 分辨率设置为固定的
  • 状态已从更改审查关闭

58097:

引导/加载:在多站点地址中添加对自定义端口的支持。

这允许多站点网络使用包含端口名的地址,例如example.com:1234,并将此支持添加到本地开发环境中。现在可以在本地开发环境上运行多站点安装,例如本地主机:8889.

这还修复了在端口上运行单站点安装时的一些错误,并更新了测试基础结构,以便整个测试套件在有端口号和无端口号的情况下都能运行。

道具djzone、scru、nacin、ipstenu、F J Kaiser、jeremyfelt、johnjamesjacoby、spacedmonkey、PerS、Clorith、Blackbam、enrico.sorcinelli、Jules Colle、obliviousharmony、desrosj、johnbillion

修复#21077,#52088

#48 @约十亿
5个月以前

  • 关键词 添加到字段指南补充

#50 @spacedmonkey(空格键)
5个月以前

@johnbillion感谢你做出承诺。

我重置了本地docker env并重新安装了数据库。我设置了定义(“WP_ALLOW_MULTISITE”,true);在wp-config.php中。我用网络设置屏幕在CMS中安装了多站点。多站点设置完成后,我被wp-admin踢了出去。从那以后,我一直无法用我的用户名和密码登录管理员。

我是遗漏了什么还是做错了什么?

#51 @spacedmonkey(空格键)
5个月以前

清除Cookie后,我看到了此消息

错误:您的浏览器阻止或不支持Cookie。您必须启用cookie才能使用WordPress。

按照预期检查数据库、站点和博客表。

这张票是在松弛(Slack)spacedmonkey在#核心中。查看日志.


5个月以前

#53 @约十亿
5个月以前

  • 关键词 has-patch接口 has-unit-测试远离的
  • 分辨率 固定的删除
  • 状态已从更改关闭重新打开的

正在重新打开以进行调查。

这是在地址中有或没有端口号的站点上吗?

#54 @spacedmonkey(空格键)
5个月以前

我发现,当我这样设置cookie域时,我可以查看登录信息。

define('COOKIE_DOMAIN','.localhost');

我的本地cookie域的值(未设置)为.localhost:8889.

我认为这里有端口号是个问题。

#55 @spacedmonkey(空格键)
5个月以前

这里有一个快速解决方案。

私有函数_set_cookie_domain(){if(!空($this->cookie_domain)){回报;}$this->cookie_domain=parse_url($this->域,PHP_url_HOST);if(str_starts_with($this->cookie_domain,'www.')){$this->cookie_domain=substr($this->cookie.domain,4);}}

在WP_Network类中,当设置cookie域时,使用解析url获取域并删除端口号。

#56 @约十亿
5个月以前

  • 关键词 需求-测试补充;早期的远离的

我一直在测试这个更改,没有遇到任何问题。我测试过:

  • 手动安装单站点,然后使用工具->网络设置安装多站点
  • 通过自动安装单个站点npm运行环境:安装然后使用“工具”->“网络设置”安装多站点
  • 通过设置直接安装Multisite本地_多功能在中为true.env(英语)和运行npm运行环境:安装

我已经用Chrome和Firefox进行了测试,每次都能成功登录。

@spacedmonkey你能确认你重置和安装环境的具体步骤吗?

如果其他人能够帮助测试这一点,我们将不胜感激。

#57 @spacedmonkey(空格键)
5个月以前

@johnbillion不,我没有使用本地_多功能.

我安装了WordPress的一个版本作为单个站点。添加时

/*多站点*/定义(“WP_ALLOW_MULTISITE”,true);

到wp-config.php。我使用网络设置屏幕-子域进行设置。

子域,如site1.localhost:8889和site2.localhost:8889

使用这些设置

define('MULTISITE',true);define('SUBDOMAIN_INSTALL',true);define('DOMAIN_CURRENT_SITE','localhost:8889');定义('PATH_CURRENT_SITE','/');定义('SITE_ID_CURRENT_SITE',1);定义('BLOG_ID_CURRENT_SITE',1);

在完成这些设置之后,我成功地复制了这个问题。

在我测试代码修复时https://core.trac.wordpress.org/ticket/21077#评论:55登录成功。

#58 @spacedmonkey(空格键)
5个月以前

根据Cookie的RFCrfc6265型

Cookie不提供端口隔离。

所以cookie域应该是localhost,而不是localhost:8889。

这确实提出了一个问题,如果你能用这样的多个站点进行多站点访问。

本地主机:8889,
本地主机:8888,
本地主机:8887

WordPress会考虑你登录吗?如果你登录了一个,因为所有的域名都是一样的吗?

#59 随访: @约十亿
5个月以前

我很确定本地服务器不支持子域。需要更多调查。

#60 答复: 59 @spacedmonkey(空格键)
5个月以前

回复约十亿:

我很确定本地服务器不支持子域。需要更多调查。

设置

define('SUBDOMAIN_INSTALL',false);

在我现有的多站点上,我仍然无法登录。

#61 @约十亿
5个月以前

  • 关键词 需要-补丁补充;需求-测试远离的

您是否重新安装了子目录?

它看起来像allow_subdomain_install()还需要更新函数以处理端口,以防止在上设置子域安装本地主机:8889。它防止在子目录、本地主机和IP地址上安装子域,但不考虑端口。

上次编辑时间5个月前通过约十亿(以前的)(差异)

#62 @约十亿
5个月以前

@遗忘和谐你想看看上面吗?周围的逻辑$域在里面allow_subdomain_install()除了当前对路径和IP地址的处理之外,还需要更新以说明端口。

#63 @spacedmonkey(空格键)
5个月以前

@johnbillion@obliviousharmony值得注意的是,登录在子目录网络中也会被破坏。只是测试了一下,发现了同样的问题。

这张票是在采购订单号6521WordPress/WordPress-develop开发通过@spacedmonkey(空格键).


5个月以前
#64

  • 关键词 has-patch接口补充;需要-补丁远离的

使用解析urlPHP_URL_主机以确保域是“本地主机”并且端口被剥离。

Trac票:https://core.trac.wordpress.org/tickt/21077

#65 @spacedmonkey(空格键)
5个月以前

  • 关键词 需要-补丁补充;has-patch接口远离的

我在公关方面做了一个简单的修复#6521.

这修复了我的本地设备中的问题。

这张票是在松弛(Slack)在spacedmonkey的core-multisite中。查看日志.


5个月以前

#67 @约十亿
4个月以前

58125:

引导/加载:在确定是否允许安装Multisite的子域时,请考虑端口号。

这将导致阻止在本地主机上的端口上运行安装(例如本地主机:8889)被转换为子域多站点安装,而以前它是不正确的。

道具空格键

请参阅#21077

#68 @spacedmonkey(空格键)
4个月以前

@johnbillion感谢您的测试和承诺。

我已经更新了带有cookie域问题修复程序的PR。出现此问题是因为在某些情况下,parse_url可以返回null或false。因此,在将其分配给cookie_domain属性之前,只需检查返回值。

#69 @约十亿
4个月以前

  • 分辨率设置为固定的
  • 状态已从更改重新打开的关闭

58138:

引导/加载:在Multisite上初始化cookie域时更新域解析。

这样可以确保将cookie域设置为无端口号的裸域(如果有端口号)。

道具空格键

修复#21077

这张票是在松弛(Slack)胡安马奎塔的《核心》。查看日志.


3个月以前

#72 @约十亿
3个月以前

  • 关键词 现场附加指南远离的

这张票是在松弛(Slack)javier主持。查看日志.


3个月以前

这张票是在松弛(Slack)javier主持。查看日志.


3个月以前

注:请参阅TracTickets公司有关使用的帮助门票。