Symptoms
-
CGI scripts do not work on a domain if there is an application (e.g. WordPress) installed via the Plesk Application Catalog (either through Tools & Settings > Application Vault or Domains > example.com > Applications) to the Document Root of the domain.
-
CGI support is enabled in Domains > example.com > Hosting Settings.
-
CGI directory location it automatically detected as
/usr/lib/cgi-bin/
. The following error might be found in/var/www/vhosts/system/example.com/logs/error.log
:[cgi:error] [pid 6315] [client 203.0.113.2:36203] script not found or unable to stat: /usr/lib/cgi-bin/
Cause
Plesk does not add the ScriptAlias
directive for /cgi-bin/
if the application from Application Catalog is installed in the Document Root directory. This behavior is the requirement of https://www.apsstandard.org/ that was made in order to prevent corrupting /cgi-bin/
of already existing applications on a domain. That is why when an application is installed from the Application Catalog, ScriptAlias
is removed from domain's configuration file.
Resolution
Define ScriptAlias
directive manually:
-
Navigate to Subscriptions > example.com > Apache & Nginx settings > Additional Apache directives.
-
Add the desired location for
/cgi-bin/
to Additional directives for HTTP and Additional directives for HTTPS:ScriptAlias "/cgi-bin/" "/var/www/vhosts/example.com/httpdocs/cgi-bin/"