Page MenuHomePhabricator

VisualEditor throws "Error contacting the Parsoid/RESTBase server (HTTP 500)" on fresh installation
Closed, ResolvedPublic

Assigned To
None
Authored By
Chris_ws3
Dec 17 2020, 11:59 AM
Referenced Files
F34406010: image.png
Apr 18 2021, 6:47 PM
F34406054: image.png
Apr 18 2021, 6:47 PM
F34406051: image.png
Apr 18 2021, 6:47 PM
F34406028: image.png
Apr 18 2021, 6:47 PM
F34406049: image.png
Apr 18 2021, 6:47 PM
F34406031: image.png
Apr 18 2021, 6:47 PM

Description

Hi,
I made a fresh installation of MediaWiki 1.35 and didn't activated anything special while installation. After the wiki was up and running I added the following line to LocalSettings.php: wfLoadExtension( 'VisualEditor' );
Nothing else was modified.

When trying to edit a page with VisualEditor I receive the following error consistently: "Error contacting the Parsoid/RESTBase server (HTTP 500)"
My understanding is, that there shouldn't be any additional config steps to make it work?!

My setup:

  • Local raspian server that is no reachable from the internet (Linux xxxxxx 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l GNU/Linux)
  • apache2.4.38 with php7.3.19
  • Wiki is configured to be editable by everyone
  • no RewriteRules in vhost config or .htaccess

A found a lot of other reports via google about the same or similar problems but unfortunately I wasn't able to find a solution.

If I missed any important info please let me know.

Any help would be highly appreciated!

Thanks

Event Timeline

If relevant, here are my installed packages (related to apache or php) via APT on this server:

apache2-bin/stable,now 2.4.38-3+deb10u4 armhf [Installiert,automatisch]
apache2-data/stable,now 2.4.38-3+deb10u4 all [Installiert,automatisch]
apache2-utils/stable,now 2.4.38-3+deb10u4 armhf [Installiert,automatisch]
apache2/stable,now 2.4.38-3+deb10u4 armhf [installiert]
php-common/stable,now 2:69 all [Installiert,automatisch]
php-curl/stable,now 2:7.3+69 all [installiert]
php-gd/stable,now 2:7.3+69 all [installiert]
php-intl/stable,now 2:7.3+69 all [installiert]
php-mbstring/stable,now 2:7.3+69 all [installiert]
php-mysql/stable,now 2:7.3+69 all [installiert]
php-xml/stable,now 2:7.3+69 all [installiert]
php7.3-cli/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-common/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-curl/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-gd/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-intl/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-json/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-mbstring/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-mysql/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-opcache/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-readline/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]
php7.3-xml/stable,now 7.3.19-1~deb10u1 armhf [Installiert,automatisch]

I did some more investigation: The affected server has no TLS activated (http only). On another server (this time TLS enforced and also reachable from the internet) I have absolutely no problem installing the VisualEditor.
I have no other instance I could use for further testing which setting exactly causes the VisualEditor on the first instance to fail.

Even more investigation: I found out that the working server had more php-packages installed. After installing them on the first one VisualEditor is running :) The necessary must be among them:
sudo apt install php-bz2 php-pear php-zip php-bcmath php-gmp php-pspell php-tidy

I have no clue which one was the missing one, but that should be pointed out in the install documentation.

Running on a server with all libs installed Chris was mentioning, we still run into the 500 errors. The weird thing is, this seems to be a native editor issue - not a misconfigured parsoid instance.

While VE set as the default editor and trying to edit an existing page, we run into a 500 error with "Error contacting the Parsoid/RESTBase server (HTTP 500)". This is without any prerequierments or limitations in regards to text or code length of the particular site in question.

Vice-versa, when trying to CREATE a site, the VE works flawlessly and saves without errors. Trying to edit the very same newly created page, we run into the error 500 again. So my best guess is, that the implementation for the edit functions doesn´t work as an isolated error.

TiuriElensar triaged this task as High priority.EditedMar 26 2021, 9:55 AM

All those Wikis with not very tech-savyy users or webmasters, or sitting on servers without root access and/or are using a one-click-install instance of MW - in mind , I feel it appropriate that the priority of this issue has to be escalated, so those wikis are operational even for those (which will cover the majority of all wikis out there, run by private individuals).

Please note also, that hosters providing customers with one-click-applications by now only provide the last major second point releases, i.e. 1.35.0 - but not subsequent releases like 1.35.01. Providing a hotfix wold be appreciated and an inclusion into the 1.35.0 repository is needed.

Does this URL work on your wiki: http://example.com/rest.php/example.com/v3/page/html/Main_Page/12?redirect=false when you replace:

  • example.com with your wiki domain name,
  • Main_Page with your wiki main page (possibly different if your language is not English or if you customised it),
  • 12 with the revision ID of your main page (you can find it on the main page > toolbox (“Tools” section) > link “Permanent link”, it is the parameter oldid in the URL).

The VisualEditor is internally calling this page, so if this is not working the whole VisualEditor cannot work.

If this URL does not work, make sure:

  • the Apache configuration allows to call the file rest.php (this file is quite new, and really used since 1.35),
  • you have something like AllowEncodedSlashes NoDecode in your Apache config, at least for the wiki domain (see VE documentation).

Hello Seb,

regarding the given task, the answer is no, the link doesn´t work:

"The requested relative path (/mydomain.xyz/w/v3/page/html/Hauptseite/1) did not match any known handler"

My setting:
CentOS 7, PHP 7.4.16, FPM served by Apache, AllowEncodedSlashes NoDecode as domain directive and calls to rest.php are allowed by default.

Given your last error message, it seems the RestRoutes are not loaded, you can try to force them with the following line in LocalSettings.php:

wfLoadExtension( 'Parsoid', 'vendor/wikimedia/parsoid/extension.json' );

(although it should be automatically done with MW 1.35, at the contrary of MW 1.36.0-alpha (T266970))

wfLoadExtension( 'Parsoid', 'vendor/wikimedia/parsoid/extension.json' );

Would have been an easy fix, Seb, but unfortunal that´s a turn & burn. It still throws the error on edit, but works flawless on create.

To narrow the error down:
please can everyone confirm, that this error is isolated for EDITING existing pages and - vice-versa - the VE works flawlessly while CREATING and SAVING new pages without errors. At least this could exclude, that Parsoid isn´t invoked correctly via LocalSettings.php .

With the narrowing create=working/exiting=non-working, I remind others had this issue. I found T263928, D3nnis3n had this issue (warning: on the mentionned issue, a lot of people had similar-but-not-exactly-the-same issues and it is difficult to follow, so strictly read D3nnis3n). If I understand correctly, he fixed it using nginx. But perhaps you can try this: T263928#6528000 (the mentionned 403 issue is perhaps/probably because of cookies in a private wiki).

Generally speaking, these issues lies on the webserver config, so strictly check the rewrite rules to be sure 1/ the rest.php is correctly called, 2/ correctly retrieve the PATH_INFO, 3/ (minor) correctly interpret the slashes encoding (else titles with slashes could not work in the VisualEditor). Also be sure your DNS domain name is internally resolved (given there are internal HTTP calls).

If you need more help, you should publish relevant logs (Apache error logs), specific Apache config (all Apache config: general + htaccess) + MW config you have (wgVirtualRestConfig, wgServer, VisualEditor/Parsoid relevant config) so that I (or others) can reproduce the environement.

Hey Folks,

If the following issue should be an separate bug report, please tell me!

I want to chip in because I am encountering the some related problem with HTTP 500 when trying to edit on Supages of Pages.
We have a Mediawiki 1.35.2 running and I installed the VisualEditor Extension.'
Info: I have deactivated the extension in the meantime, for testing purposes I can enable it again if you are interested to test it.

At first I encounted the HTTP 404 Error which I fixed with the Apache Config from this post: https://phabricator.wikimedia.org/T270377#6952019

Afterwards HTTP 500 Error happened and I could trace it to the cause.
Scenario: You edit at Subpage of a page. Real Example: https://metalab.at/wiki/Netzwerk/Adressen

Following request happens from Mediawiki:

/wiki/rest.php/metalab.at/v3/page/html/Netzwerk%2FAdressen/70694?redirect=false&stash=true

image.png (27×1 px, 9 KB)

In the browser:

image.png (488×1 px, 122 KB)

with URL encoding decoded:

image.png (283×1 px, 39 KB)

When I read your post Seb35 (https://phabricator.wikimedia.org/T270377#6952019) I understood the naming scheme of the endpoint.

While fiddeling with the endpoint according to the seen HTTP Request in the screen above I realised that the Parsoid Endpoint is broken or at least have a totally strange behavior:

So I encountered at minimum 3 different behaviors on that endpoint:

  1. if you just call it with a existing top page (Example https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Laser/) it will redirect to the latest revision -> https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Laser/70434
  1. if you just call it with a existing top page with some random existing revision of any page (Example https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Laser/70694 - revision is of this page: https://metalab.at/wiki/index.php?title=Netzwerk/Adressen&oldid=70694 ) it will show you the HTML Rendering of that Page, whose revision you used.

image.png (425×1 px, 86 KB)

  1. When calling a subpage, it will ignore it and just show the parent page:

Example:
Parent Wiki Page: https://metalab.at/wiki/Netzwerk
Child Wiki Page: https://metalab.at/wiki/Netzwerk/Adressen
Api Parentpage: https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Netzwerk
Api Child Page: https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Netzwerk/Adressen

Both will show the following:

image.png (300×995 px, 36 KB)

but have as site title the WikiPage in the URL.

This also shows the problem , when subpages have just numbers:
e.g. https://metalab.at/wiki/Laser/2020

Calling those page on the API will be interpreted as revision 2020 in the api logic: https://metalab.at/wiki/rest.php/metalab.at/v3/page/html/Laser/2020

image.png (426×977 px, 101 KB)

Hope that helps,
Hetti

With the narrowing create=working/exiting=non-working, I remind others had this issue. I found T263928, D3nnis3n had this issue (warning: on the mentionned issue, a lot of people had similar-but-not-exactly-the-same issues and it is difficult to follow, so strictly read D3nnis3n). If I understand correctly, he fixed it using nginx. But perhaps you can try this: T263928#6528000 (the mentionned 403 issue is perhaps/probably because of cookies in a private wiki).

I have had the same problem on 3 different wikis on 2 servers. On server 1 creating pages by VE worked, editing failed with 500. On server 2 no problems with 1.35.

It seems that both servers have different write rights for /tmp.

Changing $wgTmpDirectory to "$IP . '/images/temp';" solved the issue. To be honest as I am not a Linux guru I don't know if this has any sideeffects.

Edit: now I found T268420 which seems to be the problem on my fresh installations: A shared server and I have no idea how many wiki by other customere are hosted there.

I'm running MW 1.35 from the Debian Bullseye repository and I was getting the "Error contacting the Parsoid/RESTBase server (HTTP 500)" error. None of the suggestions above worked for me. However, I found that changing line 26 of
/usr/share/mediawiki/vendor/wikimedia/parsoid/src/Wt2Html/Grammar.php from

class Grammar extends \WikiPEG\PEGParserBase {

to

class Grammar extends \Wikimedia\WikiPEG\PEGParserBase {

fixed the error.

This comment was removed by Andrewmvk.

I'm getting this issue as well. Oddly enough, it's only when editing pages which include a template. The Visual Editor will work fine on any page without a template, or a page I'm currently adding a template to and haven't saved yet. Using the source editor to remove a template from a page will allow me to successfully jump into the Visual Editor and continue editing. Saving the page without a template will allow me to use the Visual Editor on subsequent edits. Swapping back and forth between the Visual and Source editors when removing an offending template, without saving the page, will eventually start to spit out HTTP 500 errors again.

Additional information:

  • The exact error message is "Error contacting the Parsoid/RESTBase server (HTTP 500)" which pops up when loading the Visual Editor.
  • My wiki is a fresh installation set to private.
  • HTTP traffic is redirected to HTTPS and I have a valid cert.
  • Apache 2.4.52
  • PHP 8.1.3
  • MySQL 8.0.28
  • MediaWiki 1.37.1
  • MediaWiki installed in /var/www/ with no other wikis on the same domain.
  • Checking /.../rest.php/.../Main_Page/... with a private browser returns a 403 error "rest-read-denied"
  • Checking the same URL while logged in redirects to a stripped down text version of Main_Page without a side bar.

I'm getting this issue as well. Oddly enough, it's only when editing pages which include a template. The Visual Editor will work fine on any page without a template, or a page I'm currently adding a template to and haven't saved yet. ...

Confirm. I also get an error when editing a page if a template is used. Without templates, the page is edited well.
Also, the page is not edited if there is a line

[{{fullurl:{{FULLPAGENAMEE}}|action=pdfbook&format=single}} Create a PDF Book]

When deleting templates and this line, the page is edited normally.
When entering

http://wiki.home.local/w/rest.php/wiki.home.local/v3/page/html/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0/3743?redirect=false

error

[bc896f46ccc193f372f1fc9e] /w/rest.php/wiki.home.local/v3/page/html/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F%20%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0/3743?redirect=false Exception from line 86 of /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/Utils.php: Serialization of 'DOMElement' is not allowed

Backtrace:

#0 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/Utils.php(86): serialize()
#1 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(924): Wikimedia\Parsoid\Utils\Utils::clone()
#2 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(1252): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates::encapsulateTemplates()
#3 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/PP/Processors/WrapTemplates.php(1265): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates::wrapTemplatesInTree()
#4 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(156): Wikimedia\Parsoid\Wt2Html\PP\Processors\WrapTemplates->run()
#5 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(847): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->Wikimedia\Parsoid\Wt2Html\{closure}()
#6 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(896): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->doPostProcess()
#7 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(131): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->process()
#8 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(107): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse()
#9 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(148): Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline()
#10 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(184): Wikimedia\Parsoid\Utils\PipelineUtils::expandValueToDOM()
#11 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeExpander.php(568): Wikimedia\Parsoid\Utils\PipelineUtils::expandValuesToDOM()
#12 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeExpander.php(617): Wikimedia\Parsoid\Wt2Html\TT\AttributeExpander->buildExpandedAttrs()
#13 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1381): Wikimedia\Parsoid\Wt2Html\TT\AttributeExpander->processComplexAttributes()
#14 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/TemplateHandler.php(1543): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTemplate()
#15 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(214): Wikimedia\Parsoid\Wt2Html\TT\TemplateHandler->onTag()
#16 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(116): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process()
#17 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(178): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk()
#18 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(131): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->process()
#19 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Utils/PipelineUtils.php(107): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parse()
#20 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/Frame.php(138): Wikimedia\Parsoid\Utils\PipelineUtils::processContentInPipeline()
#21 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeTransformManager.php(60): Wikimedia\Parsoid\Wt2Html\Frame->expand()
#22 [internal function]: Wikimedia\Parsoid\Wt2Html\TT\AttributeTransformManager->processOne()
#23 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeTransformManager.php(90): array_map()
#24 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeExpander.php(617): Wikimedia\Parsoid\Wt2Html\TT\AttributeTransformManager->process()
#25 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/AttributeExpander.php(640): Wikimedia\Parsoid\Wt2Html\TT\AttributeExpander->processComplexAttributes()
#26 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php(242): Wikimedia\Parsoid\Wt2Html\TT\AttributeExpander->onAny()
#27 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(116): Wikimedia\Parsoid\Wt2Html\TT\TokenHandler->process()
#28 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(188): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunk()
#29 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php(186): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily()
#30 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/HTML5TreeBuilder.php(419): Wikimedia\Parsoid\Wt2Html\TokenTransformManager->processChunkily()
#31 [internal function]: Wikimedia\Parsoid\Wt2Html\HTML5TreeBuilder->processChunkily()
#32 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php(909): Generator->current()
#33 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(152): Wikimedia\Parsoid\Wt2Html\DOMPostProcessor->processChunkily()
#34 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php(202): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseChunkily()
#35 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php(299): Wikimedia\Parsoid\Wt2Html\ParserPipeline->parseToplevelDoc()
#36 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Core/WikitextContentModelHandler.php(78): Wikimedia\Parsoid\Wt2Html\ParserPipelineFactory->parse()
#37 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Parsoid.php(152): Wikimedia\Parsoid\Core\WikitextContentModelHandler->toDOM()
#38 /var/www/wiki/w/vendor/wikimedia/parsoid/src/Parsoid.php(184): Wikimedia\Parsoid\Parsoid->parseWikitext()
#39 /var/www/wiki/w/extensions/VisualEditor/includes/VEParsoid/src/Rest/Handler/ParsoidHandler.php(540): Wikimedia\Parsoid\Parsoid->wikitext2html()
#40 /var/www/wiki/w/extensions/VisualEditor/includes/VEParsoid/src/Rest/Handler/PageHandler.php(110): VEParsoid\Rest\Handler\ParsoidHandler->wt2html()
#41 /var/www/wiki/w/includes/Rest/Router.php(365): VEParsoid\Rest\Handler\PageHandler->execute()
#42 /var/www/wiki/w/includes/Rest/Router.php(320): MediaWiki\Rest\Router->executeHandler()
#43 /var/www/wiki/w/includes/Rest/EntryPoint.php(144): MediaWiki\Rest\Router->execute()
#44 /var/www/wiki/w/includes/Rest/EntryPoint.php(111): MediaWiki\Rest\EntryPoint->execute()
#45 /var/www/wiki/w/rest.php(31): MediaWiki\Rest\EntryPoint::main()
#46 {main}

Mediawiki 1.35.5 + nginx 1.18.0 + PHP 8.1.3 (fpm-fcgi) + ubuntu 18.04.

@Socksoff @Chapenkov11
Could both of you please try with a PHP version below 8?
I do have the exact same issue now, but only since I updated to PHP 8.
When I revert back to 7.4, it's gone and everything works.

If this is the case for you as well, that might help people find out what the issue is. (It might be a different one than the OP has with PHP 7.3)

(I happen to be the guy that @Seb35 mentioned above that got the original issue fixed, but since I updated to 8.0 and 8.1 I have the same issue as mentioned here. Downgrading fixes it immediately.)

@Socksoff @Chapenkov11
Could both of you please try with a PHP version below 8?
I do have the exact same issue now, but only since I updated to PHP 8.
When I revert back to 7.4, it's gone and everything works.

Thank you very much! Installed php7.4-fpm, the error disappeared. Now the pages that previously caused the error are being edited.

Glad to hear it worked, now I'm hoping for the bigger brains that might have an idea why PHP 8+ breaks this.

I'm running MW 1.35 from the Debian Bullseye repository and I was getting the "Error contacting the Parsoid/RESTBase server (HTTP 500)" error. None of the suggestions above worked for me. However, I found that changing line 26 of
/usr/share/mediawiki/vendor/wikimedia/parsoid/src/Wt2Html/Grammar.php from

class Grammar extends \WikiPEG\PEGParserBase {

to

class Grammar extends \Wikimedia\WikiPEG\PEGParserBase {

fixed the error.

FYI: I found this error occurs if MediaWiki is build from REL1_35 branch with composer and the --classmap-authoritative flag.

I've been running PHP 7.4.29 from install, but have been getting the same issue. VisualEditor works flawlessly when creating pages, but throws a 500 error when editing existing ones. I tried adding $wgGroupPermissions['*']['writeapi'] = true; at the end of my LocalSettings.php at one point and thought it was fixed because I was able to edit a page at first, but immediately after moving off that page VisualEditor refused to work again, on either the Main Page or the page I had just tried to edit.

Later, I added wfLoadExtension( 'Parsoid', 'vendor/wikimedia/parsoid/extension.json' ); as well, thought it might be fixed again, but the issue persisted. Surprisingly I got VisualEditor to open several times when editing both my one wiki page and the Main Page this time, but I've removed those two lines now to see if that inconsistent functioning might be the case even without them.

I'm running all this locally on Windows, and installed all the prerequisite software with XAMPP. The only further manual configuration I did was install APCu, uncomment extension=intl and add extension=apcu in php.ini, and add wfLoadExtension( 'VisualEditor' ); to the end of LocalSettings.php to actually activate VisualEditor. And add the file fragment suggested in https://www.mediawiki.org/wiki/Manual:Security#Upload_security to httpd.conf to get rid of the security warning, adjusted to my file structure.

Even more investigation: I found out that the working server had more php-packages installed. After installing them on the first one VisualEditor is running :) The necessary must be among them:
sudo apt install php-bz2 php-pear php-zip php-bcmath php-gmp php-pspell php-tidy

I have no clue which one was the missing one, but that should be pointed out in the install documentation.

I registered specifically to comment on this!
Thank you so much, you're a lifesaver.

I had this problem and installing php-bcmath and php7.4-bcmath solved the issue for me!

MediaWiki v1.37.2
PHP v7.4.28

As of 1.38.1 Visual Editor works correctly with PHP 8.1, looks resolved.

Having this issue in a fresh 1.38.1, see https://wikivideos.org/wiki/Main_Page?veaction=edit
I also had it in 1.37 (updated to 1.38.1 hoping it would fix itself but didn't).
The issue doesn't occur on two 1.35 wikis I have on the same server (https://sophivorus.com and https://mediawiki.solutions)
I'm running PHP 7.4.12 and identical setup everywhere, AFAICT.
Page creation works fine, the issue happens only when editing existing pages.
Looking at https://wikivideos.org/info.php it's pretty clear I have php-bz2 php-zip php-bcmath php-gmp php-pspell php-tidy
But php-pear is disabled. It feels very unlikely this be the cause since my 1.35 wikis work fine without it but I'll report back when I manage to enable it.
Also I can't switch to PHP 8.1 to test if this fixes the issue, I'm afraid.

Even more investigation: I found out that the working server had more php-packages installed. After installing them on the first one VisualEditor is running :) The necessary must be among them:
sudo apt install php-bz2 php-pear php-zip php-bcmath php-gmp php-pspell php-tidy

I have no clue which one was the missing one, but that should be pointed out in the install documentation.

I registered specifically to comment on this!
Thank you so much, you're a lifesaver.

I had this problem and installing php-bcmath and php7.4-bcmath solved the issue for me!

MediaWiki v1.37.2
PHP v7.4.28

I just wanted to confirm that including php extensions also fixed the problem for me; to be more precise, the behavior I was having was that I was able to edit NEW pages but not existing ones, I tried every single suggestion I found out there until this actually fixed my problem!!!

MediaWiki 1.35.2
PHP 7.4.28

So, thank you very much @Chris_ws3 and @628071 !!!!

Suddenly my Visual Editor on my private wiki gives:

Error contacting the Parsoid/RESTBase server (HTTP 500)

The VE was working until today when this issue cropped up. I have tried all the solutions suggested above and none works.

I can create a page via VE without a problem but I cannot edit the same page that has been newly created using VE.

Running Cent OS 8, Mediawiki 1.37.1, php7.4.3 & 10.3.28-MariaDB

As a developer I can't understand how a so diffuse problem still has a so unclear message...

In my case the REAL error isn't 500 but what's behind it and seems to be:

{"message":"Error: exception of type TypeError: Argument 2 passed to Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler::pushList() must be an instance of stdClass, instance of Wikimedia\\Parsoid\\NodeData\\DataParsoid given, called in /home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php on line 518","exception":{"id":"59731ee0d43ff7a9b4867c3d","type":"TypeError","file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php","line":304,"message":"Argument 2 passed to Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler::pushList() must be an instance of stdClass, instance of Wikimedia\\Parsoid\\NodeData\\DataParsoid given, called in /home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php on line 518","code":0,"url":"/rest.php/www.tematichedigenere.com/v3/page/html/Cosa_c%27%C3%A8_da_fare%3F/27246?redirect=false&stash=true","caught_by":"other","backtrace":[{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php","line":518,"function":"pushList","class":"Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php","line":269,"function":"doListItem","class":"Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/ListHandler.php","line":85,"function":"onListItem","class":"Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TT/TokenHandler.php","line":150,"function":"onTag","class":"Wikimedia\\Parsoid\\Wt2Html\\TT\\ListHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php","line":132,"function":"process","class":"Wikimedia\\Parsoid\\Wt2Html\\TT\\TokenHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TokenTransformManager.php","line":195,"function":"processChunk","class":"Wikimedia\\Parsoid\\Wt2Html\\TokenTransformManager","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/TreeBuilder/TreeBuilderStage.php","line":487,"function":"processChunkily","class":"Wikimedia\\Parsoid\\Wt2Html\\TokenTransformManager","type":"->"},{"function":"processChunkily","class":"Wikimedia\\Parsoid\\Wt2Html\\TreeBuilder\\TreeBuilderStage","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/DOMPostProcessor.php","line":903,"function":"current","class":"Generator","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipeline.php","line":180,"function":"processChunkily","class":"Wikimedia\\Parsoid\\Wt2Html\\DOMPostProcessor","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wt2Html/ParserPipelineFactory.php","line":308,"function":"parseChunkily","class":"Wikimedia\\Parsoid\\Wt2Html\\ParserPipeline","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Wikitext/ContentModelHandler.php","line":123,"function":"parse","class":"Wikimedia\\Parsoid\\Wt2Html\\ParserPipelineFactory","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Parsoid.php","line":172,"function":"toDOM","class":"Wikimedia\\Parsoid\\Wikitext\\ContentModelHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/src/Parsoid.php","line":210,"function":"parseWikitext","class":"Wikimedia\\Parsoid\\Parsoid","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/extension/src/Rest/Handler/ParsoidHandler.php","line":587,"function":"wikitext2html","class":"Wikimedia\\Parsoid\\Parsoid","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/vendor/wikimedia/parsoid/extension/src/Rest/Handler/PageHandler.php","line":88,"function":"wt2html","class":"MWParsoid\\Rest\\Handler\\ParsoidHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/includes/Rest/Router.php","line":414,"function":"execute","class":"MWParsoid\\Rest\\Handler\\PageHandler","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/includes/Rest/Router.php","line":338,"function":"executeHandler","class":"MediaWiki\\Rest\\Router","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/includes/Rest/EntryPoint.php","line":168,"function":"execute","class":"MediaWiki\\Rest\\Router","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/includes/Rest/EntryPoint.php","line":133,"function":"execute","class":"MediaWiki\\Rest\\EntryPoint","type":"->"},{"file":"/home/251650.cloudwaysapps.com/wyvytmmgmu/public_html/rest.php","line":34,"function":"main","class":"MediaWiki\\Rest\\EntryPoint","type":"::"}]},"httpCode":500,"httpReason":"Internal Server Error"}

Having this issue in a fresh 1.38.1, see https://wikivideos.org/wiki/Main_Page?veaction=edit
I also had it in 1.37 (updated to 1.38.1 hoping it would fix itself but didn't).
The issue doesn't occur on two 1.35 wikis I have on the same server (https://sophivorus.com and https://mediawiki.solutions)
I'm running PHP 7.4.12 and identical setup everywhere, AFAICT.
Page creation works fine, the issue happens only when editing existing pages.
Looking at https://wikivideos.org/info.php it's pretty clear I have php-bz2 php-zip php-bcmath php-gmp php-pspell php-tidy
But php-pear is disabled. It feels very unlikely this be the cause since my 1.35 wikis work fine without it but I'll report back when I manage to enable it.
Also I can't switch to PHP 8.1 to test if this fixes the issue, I'm afraid.

I think I now have all the necessary PHP extensions enabled, see https://wikivideos.org/info.php and https://wikivideos.org/wiki/Special:Version

However the issue remains. It can be reproduced at any time by visiting https://wikivideos.org/wiki/Main_Page?veaction=edit

My solution: I followed this thread and the very last comment (scroll down to "School4schools" from 12 July 2022 12:45 PM) contains the solution:

  • open your LocalSettings.php file
  • add the following line at the very bottom:
$wgTmpDirectory = "$IP/images/temp";
  • in your images folder, create a subfolder temp and set permissions to at least 755 (if created with root, set it to 777)

Now you should be able to edit your posts again.


Original Post:

I just checked out the MediaWiki software yesterday and successfully setup a wiki on one domain. On another domain, however, I was not able to edit pages later. Same behavior as mentioned ~100 times before:

  • Create new page: No problem, VisualEditor opens instantly
  • Edit an existing page: Visual Editor fires "Error contacting the Parsoid/RESTBase server (HTTP 500)"

Both wikis are hosted on the same server under different domains. So all settings are basically the same, except for SSL certificates and databases. To investigate this issue a little deeper, I created two more wikis, each on the same domain as before but with another subdomain. And again, editing pages works for one wiki, but not for the other.

For all people still having the Error 500 with VisualEditor: Can you please check whether your wiki domain contains a hyphen (dash) character, namely - ? In my case, the wikis only work with alphanumeric domain names.

(Of course, the issue could have to do something with the domain specific server settings as well. But I doubt there would be any significant difference, for I run all domains on the same server and use identical configurations wherever I can...)

By the way, I am a web developer as well and agree with @hyperreview that such a nasty problem (or should we say - obvious bug?) should not occur after so many years without a satisfying error message or general solution.

Setting

$wgTmpDirectory = "$IP/images/temp";

solved the issue for me, thanks @SparkFountain !

The /temp directory already existed and was quite full of stuff. It's strange because https://www.mediawiki.org/wiki/Manual:$wgTmpDirectory is set to /tmp by default. Is it possible that an incorrect /temp directory is hardcoded somewhere in the visual editor and is causing the bug?

Résolu, merci @Tous !!!

Information:

  • My wiki is a docker fresh installation set to private.
  • HTTP traffic is redirected to HTTPS and I have a valid cert.
  • MediaWiki 1.37.2 (docker)
  • MediaWiki installed in /var/www/html/w (changed with Dockerfile)
  • No other wikis on the same domain.

Error Messages was:

  1. Error contacting the Parsoid/RESTBase server: (curl error: 7) Couldn't connect to server --> Corrigé avec la ligne 1. (voir plus bas)
  2. Error contacting the Parsoid/RESTBase server (HTTP 404) --> La solution est ici... https://www.mediawiki.org/wiki/Extension:VisualEditor#Troubleshooting
  3. Error contacting the Parsoid/RESTBase server (HTTP 500) --> Corrigé avec les lignes 10. et12.

Lignes ajoutées dans LocalSettings.php:

1.  $wgCanonicalServer = "http://localhost:80";
2.  
3.  $wgVirtualRestConfig['modules']['parsoid'] = array(
4.     // URL to the Parsoid instance.
5.     // You should change $wgServer to match the non-local host running Parsoid
6.     // Note! This is a server to server URL (it must be valid within your VM/container)
7.     // For a VM or docker this will probably be correct:
8.     // 'url' => "http://localhost/rest.php",
9.     // 'url' => $wgServer . $wgScriptPath . '/rest.php',
10.   'url' => $wgCanonicalServer . $wgScriptPath . '/rest.php',
11.   // Parsoid "domain", see below (optional, rarely needed)
12.   'domain' => 'wiki.mondomaine.com',
13. );

I'm running MW 1.35 from the Debian Bullseye repository and I was getting the "Error contacting the Parsoid/RESTBase server (HTTP 500)" error. None of the suggestions above worked for me. However, I found that changing line 26 of
/usr/share/mediawiki/vendor/wikimedia/parsoid/src/Wt2Html/Grammar.php from

class Grammar extends \WikiPEG\PEGParserBase {

to

class Grammar extends \Wikimedia\WikiPEG\PEGParserBase {

fixed the error.

I had a very similiar experience. My Visual Editor stopped opening (HTTP 500) after patching my installation from MediwWiki 1.35.7 to 1.35.8 yesterday. I could trace the problem down to some namespace declarations in a couple of files in the vendor\wikimedia\wikipeg\src directory. I had namespace Wikimedia\WikiPEG; in my existing installation whereas the very same files in the MediaWiki 1.35.8 bundle I downloaded for comparison had namespace WikiPEG;. After replacing these files (=changing the declaration to namespace WikiPEG;), the editor was working again! There might be a combination of additional reasons but this action did the trick for my installation.

matmarex added a project: MW-1.41-notes.
matmarex added a subscriber: matmarex.

This problem should no longer occur on MediaWiki 1.41 and later, as VisualEditor no longer uses HTTP requests internally to contact Parsoid, it just calls the PHP methods directly (see T320529 for related work).

Please try MediaWiki 1.41 and hopefully VisualEditor will now finally just work. If you still encounter some issues, please file a new task.

I was able to solve this problem on an existing MW 1.35. The problem unexpectedly occurred after an upgrade from Linux Mint 20.3 to 21.3, which involved an upgrade from PHP 7.4 to 8.1. The Visual Editor worked well with PHP 7.4 but systematically failed on 8.1.

I was able fo diagnose the problem using a hint from T264247. I searched the page "Parsoid" on my local MediaWiki server, and I clicked on "Edit".

tail -f /var/log/apache2/access.log

192.168.1.42 - - [06/Feb/2024:11:50:39 +0100] "GET /wiki/rest.php/192.168.1.42/v3/page/html/Parsoid/290082?redirect=false&stash=true HTTP/1.1" 500 15287 "-" "VisualEditor-MediaWiki/1.35.0"

I noticed the HTTPD 500 error. So, I copied the http request from the log file into the URL line of the browser:
http://192.168.1.42/wiki/rest.php/192.168.1.42/v3/page/html/Parsoid/290082?redirect=false&stash=true

and I immediately received the following error in the browser:

{"messageTranslations":{"en":"The requested relative path (/192.168.1.42/v3/page/html/Parsoid/290082) did not match any known handler"},"httpCode":404,"httpReason":"Not Found"}

So I noticed that the generated URL contained a spurious /html subpath, that did not exist. Then I decided to add the following option into the LocalSettings file:

vi LocalSettings.php

$wgVisualEditorRestbaseURL = $wgServer . $wgScriptPath . '/rest.php/v3/page/';

This finally solved the problem. This gives me some more time to plan the upgrade to a higher version of MediaWiki; my current MediaWiki 1.35 system works again fine with PHP 8.1...

The problem being yesterday solved... today I thumble into another problem:
http://192.168.1.42/wiki/index.php?title=Parsoid&veaction=edit

{"messageTranslations":{"en":"The requested relative path (/v3/page/Parsoid) did not match any known handler"},"httpCode":404,"httpReason":"Not Found"}

tail -f /var/log/apache2/access.log

192.168.1.8 - - [07/Feb/2024:10:21:18 +0100] "GET /wiki/rest.php/v3/page/Parsoid?redirect=false&stash=true HTTP/1.1" 404 446 "http://192.168.1.42/wiki/index.php/Parsoid?veaction=edit" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0"

Problem is that the IP address switches from the VirtalBox guest 192.168.1.42 to the VirtalBox host 192.168.1.8...
Why? How to prevent this?