Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
litespeed_wiki:config:understanding_500 [2018/05/16 15:10]
Jackson Zhang [Run out of Memory on php.ini]
litespeed_wiki:config:understanding_500 [2018/06/20 17:49]
Jackson Zhang [Faulty .htaccess]
Line 1: Line 1:
 ====== Understanding 500 Internal Server Error ====== ====== Understanding 500 Internal Server Error ======
    
-The 500 status code, or Internal Server Error, means that server cannot process the request for an unknown reason. Sometimes this code will appear when more specific 5xx errors are more appropriate.+The 500 status code, or "Internal Server Error," ​means that the server cannot process the request for an unknown reason. Sometimes this code will appear when more specific 5xx errors are more appropriate.
  
-This most common ​cause for this error is server misconfiguration (e.g. a malformed .htaccess file) or missing packages (e.g. trying to execute a PHP file without PHP installed properly), permission or ownership changes, ​Improperly ​configured php.ini, a PHP upgrade ​...etcanything ​can trigger a 500 error in a website. The impact of the error can vary based on the cause that triggered it. +The most common ​causes ​for this error are server misconfiguration (e.g. a malformed ​''​.htaccess'' ​file)missing packages (e.g. trying to execute a PHP file without PHP installed properly), permission or ownership changes, ​improperly ​configured ​''​php.ini''​, a PHP upgrade, ​etc. //​Anything//​ that the server doesn'​t know how to handle ​can trigger a 500 error in a website. The impact of the error can vary based on the event that triggered it. 
  
-500 error is not a LiteSpeed ​web server ​specific error. If you use a control panel like cpanel, you can try the same steps with apache. Most likely Apache will return the same 500 error as LSWS. You will need to find out the reason which causes ​the problem. If it does not happen to apache ​server but only on LSWS, you can log a ticket with us for further investigation. ​+500 error is not a LiteSpeed ​Web Server ​specific error. If you use a control panel like cPanel, you can try the same steps with Apache. Most likelyApache will return the same 500 error as LSWS. You will need to find root cause of the problem. If it does not happen to Apache ​server but only on LSWS, you can [[https://​store.litespeedtech.com/​store/​clientarea.php|log a ticket with us]] for further investigation. ​
  
-To troubleshoote ​500 error, first to check whether the error affects just one site or every site in the server. Depending on the impact of the error, ​we debug further. If only one domain ​it affected, it can be pin-pointed to the specific script error or permission ​issues. If multiple domains show 500 error, it could be due to some server wide setting change or update.+To troubleshoot a 500 error, first check whether the error affects just one site or every site in the server. Depending on the impact of the error, ​you can debug further. If only one domain ​is affected, it can be pin-pointed to specific script error or permission ​issue. If multiple domains show 500 error, it could be due to some server wide setting change or update.
  
-You can check server error_log , stderr.log or PHP error-log(normally located where the PHP script running) to see if there is any hint of the error. During the troubleshooting,​ you may want to ensure PHP error reporting is on in php.ini. Please reverse ​them back when you done with debuging.+You can check the server ​''​error_log''​''​stderr.log'' ​or PHP error log (normally located where the PHP script ​is running) to see if there is any hint of the error. During the troubleshooting,​ you may want to ensure PHP error reporting is on in ''​php.ini''​. Please reverse ​the settings ​back when you'​re ​done with debuging.
   error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ​ ->   ​error_reporting = E_ALL   error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ​ ->   ​error_reporting = E_ALL
   display_errors = Off -> display_errors = On   display_errors = Off -> display_errors = On
   display_startup_errors = Off -> display_startup_errors = On   display_startup_errors = Off -> display_startup_errors = On
   ​   ​
-Please be aware that not all 500 errors ​log into the logs and it is common ​that you don’t ​see any hint in log files, which will make the troubleshooting more difficult ​then you expected+Please be aware that not all 500 errors ​appear in the logs and it is common ​not to see any hint in log files This makes troubleshooting more difficult.
  
-This will list some of the common reasons/​examples,​ which may help you during the troubleshooting ​processes.+Here are some of the common reasons/​examples,​ which may help you during the troubleshooting ​process.
  
-=====   permission ​or ownership changes ​===== +===== Permission ​or Ownership Changes ​===== 
- ​Permission or ownership changes may cause 500 error. For example, to enable LiteMage extension ​to your Magento installation through ​ssh, you will need to run as user. However, if you run command incorrectly as the root user, Magento front end may return 500 instantly. The fix is to reverse file ownership and permission ​back to the original.+ ​Permission or ownership changes may cause 500 error. ​ 
 +  
 + For example, to enable ​the LiteMage extension ​in your Magento installation through ​SSH, you will need to run a a non-root ​user. However, if you run the command incorrectly as the root user, the Magento front end may return 500 instantly. The fix is to reverse file ownership and permissions ​back to the original ​user.
  
-===== faulty ​.htaccess ===== +===== phpinfo.php owned by root instead of user ===== 
-There is a huge range of things .htaccess can do and isn't difficult to use, however, if you do not enter the syntax correctly it can result in a Server 500 Error. ​+Sometimes we need to check phpinfo page during the troubleshooting. When ssh login as root to server, go to document root and create phpinfo.php,​ the phpinfo.php file will be owned by root:root instead of user:user.  
 + 
 +Sometimes it may return 500 error when accessing domain.com/​phpinfo.php if some restriction set there but not always.  
 + 
 +The server error may show the following:​ 
 +[Thu Jun 07 21:​04:​36.450359 2018] [:error] [pid 3807521:tid 139749549020928] [client 77.82.94.132:​9254] SoftException in Application.cpp:​382:​ UID of script "/​home/​vivi/​public_html/​phpBB2/​info.php"​ is smaller than min_uid 
 +[Thu Jun 07 21:​04:​36.450651 2018] [core:​error] [pid 3807521:tid 139749549020928] [client 77.82.94.132:​9254] End of script output before headers: info.php 
 + 
 +Changing the info.php to be owned by user:user will generally fix the issue.  
 +===== Faulty ​.htaccess ===== 
 +There is a huge range of things ​''​.htaccess'' ​can do and it isn't difficult to use, however, if you do not enter the syntax correctly it can result in a Server 500 Error. ​
 For example, ​ For example, ​
-  RewriteRule ^(.*) http://​www.example.com/​$1 [P]  <- wrong , will bring site to 500 error +  RewriteRule ^(.*) http://​www.example.com/​$1 [P] 
-changed ​to   ​ +Will cause a 500 error. But change it to 
-RewriteRule (.*) http://​www.example.com/​$1 [R=301,​L] ​  <- will fix the issue +  RewriteRule (.*) http://​www.example.com/​$1 [R=301,L] 
-To confirm whether a misconfiguration .htaccess is the cause of the 500 Internal Server error, either remove or rename the .htaccess file temporarily and then try to reload the page.+And that will fix the issue.
  
-=====  Improperly configured php.ini ===== +To confirm whether a misconfiguration in ''​.htaccess''​ is the cause of the 500 Internal Server ​error, ​either remove or rename ​the .htaccess file temporarily and then try to reload ​the page.
-Improperly configured php.ini may lead to 500 error.  +
-For exampleset the following in php.ini      +
- ​open_basedir = "/​path/​to/​folder"​ +
-However /​path/​to/​folder directory does not exist at all in the system, it will cause 500 error.+
  
-===== Bad PHP code ===== +===== Different level of Rewrite rules misplaced to the wrong level =====
-Bad php code will bring website to 500 immediately. +
-For example, right syntax should be like: +
-   ​$this->​getResponse()->​setRedirect(Mage::​getBaseUrl()) ; +
-If “$” is removed somehow: +
-    this->​getResponse()->​setRedirect(Mage::​getBaseUrl()) ; +
-It will bring website to 500 immediately. +
-This is only one of the examples. Many times, wrong syntax PHP error will lead to 500 error.+
  
-===== PHP handler not set ===== +Per virtual host rewrite rules (rewrite rules in Apache virtual host configuration) and per directory rewrite rules (rewrite rules in .htaccess) are different. ​ When placing the same rules to the wrong placeit may cause 500 error.
-On PleskPHP handler not set , prompt ​500 error+
  
-===== CloudLinux LVE limit reached ===== +For example, the following works in .htaccess
-When using CloudLinuxIf the site is limited by memory or number of processes limits, then the user may receive 500 errors that server cannot execute the script. +
-https://​docs.cloudlinux.com/​index.html?​lve.html+
  
 +  RewriteEngine On
 +  RewriteCond %{REQUEST_FILENAME} !-f
 +  RewriteRule . /index.php [L]
 +  ​
 +Putting the same thing in Apache VirtualHost config doesn’t work at all:
  
-===== PHP upgrade ===== +  <​VirtualHost *:80> 
-Sometimes PHP upgrade with bug may cause 500 error.+    ​ServerName example.com 
 +    DocumentRoot /​var/​www/​example/​ 
 +    <​Directory /​var/​www/​example/>​ 
 +        Allow From All 
 +    </​Directory>​ 
 +    RewriteEngine On 
 +    RewriteCond %{REQUEST_FILENAME} !-f 
 +    RewriteRule . /index.php [L] 
 +  </​VirtualHost>​
  
-===== Unsupport version of PHP ===== +Apache doesn’t tell you why it doesn’t workIt just doesn’t work. You most likely will get an Error 500 status with a message in the logs that looks like this:
-unsupport php version by the site/​theme/​plugin/​module may lead to 500 error.+
  
 +Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace.
 +=====  Improperly Configured php.ini =====
 +An improperly configured ''​php.ini''​ may lead to 500 error. ​
  
-===== PHP coding timing out ===== +For example, set the following in ''​php.ini'':​ 
-If your PHP script makes external network connections, ​the connections may time out. If too many connections are attempted and time outthis will cause a "500 Internal Server Error."​ To prevent these time outs and errors, you'll want to make sure that PHP scripts be coded with some timeout rules. Typically, however, catching a timeout ​error when connecting to a database or externally to remote resources are difficult. They, in effect, freeze the script from continuing to run.+  open_basedir ​"/​path/​to/​folder"​ 
 +  ​ 
 +If the ''/​path/​to/​folder''​ directory does not existit will cause a 500 error.
  
-===== SYNTAX OR CODING ERRORS IN YOUR CGI/PERL SCRIPT ​===== +===== Bad PHP Code ===== 
-If it is web page ending in .cgi or .pl that is producing the error, check your script for errors.+Bad PHP code will bring website to 500 immediately.
  
-===== Run out of Memory on php.ini ===== +For example, the right syntax should be: 
-check stderr, +   ​$this->​getResponse()->​setRedirect(Mage::​getBaseUrl()) ; 
- tail /​var/​log/​httpd/​stderr.log+If the “$” is removed somehow: 
 +    this->​getResponse()->​setRedirect(Mage::​getBaseUrl()) ; 
 +It will bring the website to 500 immediately
 +This is only one example. Many timeswrong PHP syntax will lead to a 500 error.
  
-  2016-03-01 12:07:03.573 [STDERR] Tue Mar  1 12:07:03 2016 (12700): Fatal Error Unable to allocate shared memory segment of 134217728 bytes: shmat: Cannot allocate memory (12)+===== PHP Handler Not Set ===== 
 +On Plesk, if a PHP handler is not set, it will prompt a 500 error.
  
-Further check phpinfo page and memory ​limit was set to “128M” only While opcode cache sonsution is “128M” +===== CloudLinux LVE Limit Reached ===== 
 +When using CloudLinux, If the site is limited by memory ​or process limits, then the user may receive 500 errors because the server cannot execute the script[[https://​docs.cloudlinux.com/​index.html?​lve.html| Learn more.]]
  
-Which leads to 500 error.+===== PHP Upgrade ===== 
 +Sometimes if PHP upgrades with a bug, it may cause a 500 error.
  
-Increate php memory limit from “128M” to 1024M” then fix the issue.+===== Unsupported Version of PHP ===== 
 +Unsupported PHP version used by the site/​theme/​plugin/​module may lead to a 500 error.
  
 +===== PHP Scripts Time out =====
 +If your PHP script makes external network connections,​ the connections may time out. If too many connections are attempted and time out, this will cause a "500 Internal Server Error."​ To prevent these time outs and errors, make sure that PHP scripts are coded with some timeout rules. Typically, it's difficult to catch a timeout error when connecting to a database or remote resources, as they effectively freeze the script.
  
-===== too many php processes ​===== +===== Syntax or Coding Errors in Your CGI/Perl Script ​===== 
-If too many processes ​in the server queue, it could exceed resources and lead to 500 error.+If it is a web page ending ​in ''​.cgi''​ or ''​.pl''​ that is producing ​the error, check your script for errors.
  
-===== PHP open_basedir may cause 500 error ===== +===== Out of Memory in php.ini ​===== 
-When php open_basedir enabledit may lead to 500 error. ​ Try to turn off open_basedir for that domain to see how it is going.+In this examplewe checked ''​stderr'':​ 
 +  tail /​var/​log/​httpd/​stderr.log
  
-The following error log captured with openlitespeed when PHP open_basedir intentionally set to a non-exist folder /111, phpinfo page returns 500 error+  2016-03-01 12:07:03.573 [STDERR] Tue Mar  1 12:07:03 2016 (12700): Fatal Error Unable to allocate shared memory segment of 134217728 bytes: shmat: Cannot allocate memory (12)
  
-  2018-05-16 10:​59:​51.391153 [NOTICE] [192.168.0.198:​14271] [STDERR] PHP Warning: ​ Unknown: open_basedir restriction in effect. File(/​usr/​local/​lsws/​Example/​html/​phpinfo.php) is not within the allowed path(s): (/111) in Unknown on line 0 +We further checked the phpinfo ​page and found the memory limit was set to “128M” onlyOpcode cache solution ​is “128M” by itself, and so there is no memory left for anything elseThis leads to a 500 error.
-  2018-05-16 10:59:51.391251 [NOTICE] [192.168.0.198:​14271] [STDERR] PHP Warning: ​ Unknown: failed ​to open stream: Operation not permitted in Unknown on line 0 +
-  2018-05-16 10:​59:​51.391263 [NOTICE] [192.168.0.198:​14271] [STDERR] PHP Fatal error:  Unknown: Failed opening required '/​usr/​local/​lsws/​Example/​html/​phpinfo.php'​ (include_path='​.:/​usr/​local/​lib/​php'​) in Unknown on line 0 +
-===== apache run as SuEXEC while LSWS not on cpanel ===== +
-On a cpanel/WHM environment,​ apache runs as SuEXEC , however LSWS doesn’t.+
  
-2016-03-10 15:​39:​45.601 [NOTICE] [173.245.52.237:​51548] [STDERR] ​PHP Warning: require_once(/​home/​demowebsites/​public_html/​goodmail/​wp-config.php):​ failed ​to open stream: Permission denied in /​home/​demowebsites/​public_html/​goodmail/​wp-load.php on line 37  +Increase the PHP memory limit from “128M” ​to 1024M” to fix the issue.
- ​2016-03-10 15:​39:​45.601 [NOTICE] [173.245.52.237:​51548] [STDERR] PHP Fatal error: require_once():​ Failed opening required '/​home/​demowebsites/​public_html/​goodmail/​wp-config.php'​ (include_path='​.:/​opt/​cpanel/​ea-php70/​root/​usr/​share/​pear'​) in /​home/​demowebsites/​public_html/​goodmail/​wp-load.php on line 37+
  
-Need to keep LSWS to the same setting ​to apache. Enabled LSWS PHP SuEXEC and fixed the issue.+===== Too Many PHP Processes == 
 +If there are too many processes in the server queue, it could exceed resources and lead to a 500 error.
  
- =====  Run out of swap space =====+===== Apache Running as SuEXEC while LSWS not on cPanel ​===== 
 +In a cPanel/WHM environment,​ Apache runs as SuEXEC, however LSWS doesn’t.
  
-Check error.log, it shows"​Failed ​to obtain or reinitialize VMemBufpossibly running out of swap space” and return 500 error. ​Relocating LSWS swap directory to a partition with enough space will fix the issue.+  2016-03-10 15:39:45.601 [NOTICE] [173.245.52.237:51548] [STDERR] PHP Warning: require_once(/​home/​demowebsites/​public_html/​goodmail/​wp-config.php):​ failed ​to open stream: Permission denied in /​home/​demowebsites/​public_html/​goodmail/​wp-load.php on line 37  
 +  2016-03-10 15:​39:​45.601 [NOTICE] [173.245.52.237:​51548] [STDERR] PHP Fatal error: require_once():​ Failed opening required '/​home/​demowebsites/​public_html/​goodmail/​wp-config.php' (include_path='​.:/​opt/​cpanel/​ea-php70/​root/​usr/​share/​pear'​) in /​home/​demowebsites/​public_html/​goodmail/​wp-load.php on line 37
  
-===== Missing php packages ===== +It is necessary to keep LSWS set the same as ApacheEnable LSWS PHP SuEXEC to fix the issue.
-Install prestashop but 500 returns in ChromeCheck error log and it shows php70-json package missing. Install ​the missing packages and 500 is gone.+
  
-===== missing opcode cache module ​===== +=====  Run Out of Swap Space =====
-A wordpress site returned 500 error when using go2pay, but there is no hint in server error_log, stderr.log or PHP error_log. Upgrading php version and adding opcode cache module fix the issue. Some applications or plugins may need opcode cache to run. +
  
-===== PHP module code complicting ===== +Checking ''​error.log''​ shows:  
-Then run magento, it returns 500 error and show module conflicting+  Failed to obtain or reinitialize VMemBuf. possibly running out of swap space
  
-a:​5:​{i:​0;​s:​54:"​Mage registry key "​umm_top_menu_exists"​ already exists";​i:​1;​s:​4439:"#​0 /​home/​yourhome/​public_html/​app/​Mage.php(223):​ Mage::​throwException('​Mage registry k...'​) +500 error is returned. Relocating the LSWS swap directory to a partition with enough space will fix the issue. 
- #1 /​home/​yourhome/​public_html/​app/​design/​frontend/​ultimo/​default/​template/​infortis/​ultramegamenu/​mainmenu.phtml(54):​ Mage::​register('​umm_top_menu_ex...',​ true) + 
- #2 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(241):​ include('/​home/​furnishyo...'​) +===== Missing PHP Packages ===== 
- #3 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(272):​ Mage_Core_Block_Template->​fetchView('​frontend/​ultimo...'​) +Installing PrestaShop returns a 500 error in Chrome. Check the error log and it shows ''​php70-json''​ package is missing. Install the missing packages and the 500 error is gone. 
- #4 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(286):​ Mage_Core_Block_Template->​renderView() + 
- #5 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(923):​ Mage_Core_Block_Template->​_toHtml() +===== Missing Opcode Cache Module ===== 
- #6 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Text/​List.php(43):​ Mage_Core_Block_Abstract->​toHtml() +A WordPress site returns a 500 error when using go2pay, but there is no hint in the server ''​error_log'',​ ''​stderr.log''​ or PHP ''​error_log''​. Upgrading the PHP version and adding the opcode cache module fixes the issue. Some applications or plugins may need opcode cache to run.  
- #7 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(923):​ Mage_Core_Block_Text_List->​_toHtml() + 
- #8 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(641):​ Mage_Core_Block_Abstract->​toHtml() +===== PHP Module Code Conflicting ===== 
- #9 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(585):​ Mage_Core_Block_Abstract->​_getChildHtml('​topMenu',​ true)+Magento returns a 500 error and shows a module conflict. 
 + 
 +  ​a:​5:​{i:​0;​s:​54:"​Mage registry key "​umm_top_menu_exists"​ already exists";​i:​1;​s:​4439:"#​0 /​home/​yourhome/​public_html/​app/​Mage.php(223):​ Mage::​throwException('​Mage registry k...'​) 
 +  #1 /​home/​yourhome/​public_html/​app/​design/​frontend/​ultimo/​default/​template/​infortis/​ultramegamenu/​mainmenu.phtml(54):​ Mage::​register('​umm_top_menu_ex...',​ true) 
 +  #2 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(241):​ include('/​home/​furnishyo...'​) 
 +  #3 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(272):​ Mage_Core_Block_Template->​fetchView('​frontend/​ultimo...'​) 
 +  #4 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Template.php(286):​ Mage_Core_Block_Template->​renderView() 
 +  #5 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(923):​ Mage_Core_Block_Template->​_toHtml() 
 +  #6 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Text/​List.php(43):​ Mage_Core_Block_Abstract->​toHtml() 
 +  #7 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(923):​ Mage_Core_Block_Text_List->​_toHtml() 
 +  #8 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(641):​ Mage_Core_Block_Abstract->​toHtml() 
 +  #9 /​home/​yourhome/​public_html/​app/​code/​core/​Mage/​Core/​Block/​Abstract.php(585):​ Mage_Core_Block_Abstract->​_getChildHtml('​topMenu',​ true) 
 + 
 +===== Disable/​Enable Some Magento Modules ===== 
 +When disabling ''​extendare_EWCore.xml''​ by changing from “True” to “false, it shows a 500 error.  
 +Remove Magento cache files and fix the problem:
  
-===== disabling/​enable some magento modules ===== 
-When disabling extendare_EWCore.xml by changing from “True” to “false, it shows 500 error. ​ 
-Remove magento cache files and fix the problem. ​ 
   rm -rf var/cache/*   rm -rf var/cache/*
  
-===== some mod security rules may cause 500 error ===== +===== Some mod_security Rules May Cause a 500 Error ===== 
-Add java script ​to a wordpress ​plugin, but it causes 500 error. Enable LSWS debug logging and found+Adding Javascript ​to a WordPress ​plugin causes ​500 error. Enable LSWS debug logging and find
- +<​code> ​
 2018-05-12 04:​13:​16.673307 [NOTICE] [47.22.54.182:​54823#​APVH_latampolitics.carinsurancegeorgia.org] mod_security rule [Id '​2000145'​] triggered! [Sat May 12 04:13:16 2018] [error] [client 47.22.54.182] ModSecurity:​ Access denied with code 500, [Rule: '​REQUEST_URI|REQUEST_BODY'​ '<​space:​(script|about|applet|activex|chrome) >​.(script|about|applet|activex|chrome)space:​ >'] [id "​2000145"​] [rev "​1"​] [msg "​xss"​] [severity "​CRITICAL"​] 2018-05-12 04:​13:​16.673307 [NOTICE] [47.22.54.182:​54823#​APVH_latampolitics.carinsurancegeorgia.org] mod_security rule [Id '​2000145'​] triggered! [Sat May 12 04:13:16 2018] [error] [client 47.22.54.182] ModSecurity:​ Access denied with code 500, [Rule: '​REQUEST_URI|REQUEST_BODY'​ '<​space:​(script|about|applet|activex|chrome) >​.(script|about|applet|activex|chrome)space:​ >'] [id "​2000145"​] [rev "​1"​] [msg "​xss"​] [severity "​CRITICAL"​]
 +</​code>​
 +A mod_security rule lead to the 500 error. Disable that mod_security rule to fix the issue.
  
-Mod_security rule leads to 500 error.  Try to disable that mod security rule and fix the issue.+===== Hacked Site ===== 
 +If your site is being hacked, it may trigger a 500 error.
  
-===== hacked site ===== +===== Perl script missing "​Content-Type"​ header may return 500 ===== 
-If your site is being hacked, ​it may trigger ​500 error.+ 
 +Run a simple "Hello World" perl script at http://​exmaple.com/​cgi-bin/​test.pl but it return ​500 error
 + 
 +vi test.pl 
 +<​code>​ 
 +  #​!/​usr/​bin/​perl 
 +  print "​Hello,​ World!\n";​ 
 +</​code>​ 
 + 
 +A Perl CGI script must output the header, HTML code and also must begin with a special first line. In this case, header "​Content-type"​ is missing and it is not a CGI script. Please also be aware that there is a blank line after **print "​Content-Type:​ text/​html\n\n";​**. 
 + 
 +the right script should be: 
 +<​code>​ 
 +<​code>​ 
 +  #​!/​usr/​bin/​perl 
 +   
 +  print "​Content-Type:​ text/​html\n\n";​ 
 +   
 +  print "​Hello,​ World!\n";​ 
 +</​code>​ 
 +You can check the example [[https://​users.cs.cf.ac.uk/​Dave.Marshall/​PERL/​node196.html|here]].
  • Admin
  • Last modified: 2019/12/10 19:33
  • by Lisa Clarke