由于StatsdDataFactory,我很难将Mediawiki从1.23升级到1.25。
我成功地完成了"作曲家更新"和"php update.php"。但是当我尝试"php rebuildall.php"时,我收到以下错误:
PHP 致命错误:类 'Liuggio\StatsdClient\Factory\StatsdDataFactory' 未在 中找到 /var/www/html/mydomain.com/w/include/libs/BufferingStatsdDataFactory.php 在第 33 行
在
(1( CentOS 6.6 + PHP 5.3.3 + Apache 2.2.15 + mysql 14.1
和在
(2( CentOS 7.1 + PHP 5.4.16 + Apache 2.4.6 + mariadb 15.1
我打开了 BufferingStatsdDataFactory.php 文件。
(第 23 行(使用 Liuggio\StatsdClient\Factory\StatsdDataFactory;
(第 33 行(类 BufferingStatsdDataFactory 扩展 StatsdDataFactory { 受保护的$buffer = 数组((;...
然后我在/var/www/html/mydomain.com/w/打开 composer.json,发现包含"liuggio/statsd-php-client"。
"require": { "cssjanus/cssjanus": "1.1.1", "ext-iconv": "*", "leafo/lessphp": "0.5.0", "liuggio/statsd-php-client": "1.0.12", "oojs/oojs-ui": "0.11.3", "php": ">=5.3.3", "psr/log": "1.0.0", "wikimedia/cdb": "1.0.1", "wikimedia/composer-merge-plugin": "1.0.0", "wikimedia/utfnormal": "1.0.2", "zordius/lightncandy": "0.18" },
在这个文件中,我模仿了这里显示的解决方案(PHP 致命错误:在/MyApp/chat-server.php 中找不到类"MyApp\Chat"(。
"autoload": { "psr-0": { "ComposerHookHandler": "includes/composer" } "psr-4": { "Liuggio\": "includes/composer" }
},
但它没有奏效。以下也不起作用。
"psr-4": { "Liuggio\": "" }
当我注释掉 BufferingStatsdDataFactory.php 时,我得到了另一个错误:
PHP 致命错误:在 中找不到类"BufferingStatsdDataFactory" /var/www/html/mydomain.com/w/include/context/RequestContext.php on 137路
现在我的维基网站无法访问。我欢迎任何建议。
检查vendor/liuggio/statsd-php-client
目录。如果类不存在,则您会遇到某种作曲家问题。如果类存在,则它们可能不包含在 Composer 用于将类名映射到文件路径的文件中。(根据其配置,Composer 可以通过根据完全限定的类名遍历目录来动态查找文件,或者通过在文件中存储完整的类 => 路径映射来提高自动加载性能。如果自动加载器是以一种方式配置的,而更新命令必须以另一种方式重新生成类映射,则会出现这样的错误。要解决此问题,请运行 composer dump-autoload --optimize
。
我发现通过7Zip或PeaZip在Windows中解压缩mediawiki-n-n.tar.gz
文件会导致文件名损坏 - 不仅在vendor/liuggio/statsd-php-client
下,而且在resources/src/mediawiki.rcfilters/*
和其他人下。
提取的文件缺少其名称的最后部分,例如:
mw.rcfilters.ui.FilterItemHighlightButton.le
mw.rcfilters.ui.FilterMenuHeaderWidget.l
mw.rcfilters.ui.FilterMenuOptionWidget.les
mw.rcfilters.ui.FilterMenuOptionWidg
而不是:
mw.rcfilters.ui.FilterItemHighlightButton.less
mw.rcfilters.ui.FilterMenuHeaderWidget.less
mw.rcfilters.ui.FilterMenuOptionWidget.less
mw.rcfilters.ui.FilterMenuOptionWidget.monobook.less
我在 extensions/
、 resources/
、tests/
和 vendor/
下发现了不正确的文件。
一旦我切换到 cywgin tar
解压缩mediawiki-n-n.tar.gz
存档,文件名是正确的。
因此,如果您看到此错误:不仅仅是vendor/liuggio/statsd-php-client
损坏,提取的存档的其他部分可能来自 7Zip/PeaZip 不正确。 我建议你用cygwin的tar
解压缩。
已填充为 https://phabricator.wikimedia.org/T123569 。看来你只需要运行composer update
.
从 https://phabricator.wikimedia.org/T123569 文章中 Antoine 'hashar' Musso 引用(谢谢(, 一旦你下载作曲家补丁: https://gerrit.wikimedia.org/r/#/c/264072/,我复制了文件夹:
composer/liuggio/statsd-php-client
并覆盖:
vendor/liuggio/statsd-php-client
文件夹,现在找到了丢失的类。 - 固定!
mediawiki全新安装只有界面,缺少类。
这是很久以前的事了,但是就在今天,我不得不在MediaWiki的最新发行版中为此而苦苦挣扎。没有任何帮助,在本地或服务器端解压缩MediaWiki存档。基本上statsd-php-client库文件在解压缩过程中是出了名的损坏。你需要做的是转到这个 Git 存储库 https://github.com/liuggio/statsd-php-client/并手动下载库,然后将其解压缩并将内容复制到 MediaWiki 目录中的 vendor/liuggio/statsd-php-client 文件夹中。希望它能拯救某人的挣扎。
快速说明:我遇到了同样的错误,但由于我正在使用的网络主机,我无法运行作曲家更新。进一步的谷歌搜索表明,这可能是由于我的网络主机上的解压缩行为异常。我只是在我的MacBook Pro上本地解压缩了mediawiki文件,FTP将所有文件都打开了,这解决了我的问题。
我在Mediawiki 1.35.1中遇到了这个问题。这个问题存在了很长时间,核心团队中没有人关心解决这个问题。我今天不得不花一个小时在Windows机器上安装。
从 Github 存储库 https://github.com/liuggio/statsd-php-client 下载文件,并替换为当前文件。
对于这个问题,我不得不用下载的文件替换mediawiki_installation_directoryvendorliuggio
的内容 https://github.com/liuggio/statsd-php-client