We are using running OJS 3.3.0-13 on RHEL 8.5. Recently and without seemingly any reason some pages from the Dashboard (like the “Administration” link) are not displaying. Instead we get a “Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.”
The PHP error we get is:
“[04-Jan-2023 16:44:08 UTC] PHP Fatal error: Uncaught GuzzleHttp\Exception\Conne ctException: cURL error 28: Operation timed out after 150000 milliseconds with 0 out of 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html ) in /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory. php:200
Stack trace: #0 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.ph p(155): GuzzleHttp\Handler\CurlFactory::createRejection() #1 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.ph p(105): GuzzleHttp\Handler\CurlFactory::finishError() #2 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.ph p(43): GuzzleHttp\Handler\CurlFactory::finish() #3 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(28): GuzzleHttp\Handler\CurlHandler->__invoke() #4 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php(51): GuzzleHttp\Handler\Proxy::GuzzleHttp\Handler{closure}() #5 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/PrepareB in /var/www/h tml/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 200”
The server was largely unused during late December and into the new year so we are a little stumped. We have restarted Apache and even the server. Has anybody seen this issue and what might be done to fix it? Thanks in advance!
Is your server behind a proxy that prevents OJS from reaching out to the outside world? If so, make sure the proxy is configured in the [proxy] section of config.inc.php.
Regards,
Alec Smecher
Public Knowledge Project Team
@asmecher Thank you I will try that. Our OJS sits behind a F5 device. I will need to figure out what values to configure. Follow up, we have made no changes to software why would it get picky about the proxy now? Thanks for all your kind help!
I don’t think OJS’s requirements have changed recently in that regard; the administration area needs to check in with the PKP webserver in order to see if there’s a new version of OJS available, and to fetch the list of plugins for presentation in the Plugin Gallery. I think those requests are currently failing for lack of a workable proxy configuration.
Regards,
Alec Smecher
Public Knowledge Project Team
@asmecher Thanks for your help so far. We are working with our firewall team and they have asked me to provide the domains/URL OJS is trying to contact. What might they be? Thanks!
To clarify defining the proxy and permitting these URL will clear up the time outs we are seeing on both:
-“Journal” (for any journal)
-“Administration”
Ok I got it further but now we have a new error. It now goes to a while screen (behind the firewall) and a firewall error (outside the firewall) almost instantly. Now we get this on the log:
"[12-Jan-2023 17:15:17 UTC] PHP Fatal error: Uncaught GuzzleHttp\Exception\ConnectException: cURL error 35: error:1408F10B:SSL routines:ssl3_get_record:wrong version number (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:200
#5 /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddlewar in /var/www/html/lib/pkp/lib/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php on line 200"
OJS passes the http_proxy and https_proxy configuration options into the Guzzle client’s constructor and Guzzle deals with the details from there. (Guzzle is the 3rd party library that we use for making HTTP/HTTPS requests from within OJS/OMP/OPS; it relies on curl when available, as in your case, but has other options when it isn’t.)
The message you’re getting is from curl, indicating that something went wrong during the protocol handshake when it tried to contact the proxy server. From the thread, you might try using a http URL (rather than https) in the https_proxy option, but the details will depend on your proxy server, and I’m just guessing.
If you can’t get this going and want to test your proxy configuration with Guzzle outside of the OJS environment, you could start working with a basic Guzzle example script.
Regards,
Alec Smecher
Public Knowledge Project Team