Current File : //usr/local/lsws/docs/PHP_Help.html
<!DOCTYPE html>
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  <title>LiteSpeed Web Server Users' Manual - PHP</title>
  <meta name="description" content="LiteSpeed Web Server Users' Manual - PHP." />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="robots" content="noindex">
  <link rel="shortcut icon" href="img/favicon.ico" />
  <link rel="stylesheet" type="text/css" href="css/hdoc.css">
</head>
<body>
<div class="pagewrapper clearfix"><aside class="sidetree ls-col-1-5">
  <figure>
    <img src="img/lsws_logo.svg" alt="lightspeed web server logo"
         width="100px"/>
  </figure>
  <h2 class="ls-text-thin">
    LiteSpeed Web Server
    <br />
    <span class="current"><a href="index.html">Users' Manual</a></span>
  </h2>
  <h3 class="ls-text-muted">Version 6.3 &nbsp;&#8212;&nbsp;Rev. 0</h3>
  <hr/>
  <div>
    <ul>
      <li><a href="license.html">License Enterprise</a></li>
      <li><a href="intro.html">Introduction</a></li>
      <li><a href="install.html">Installation</a></li>
      <li>
        <a href="admin.html">Administration</a>
        <ul class="menu level2">
          <li><a href="ServerStat_Help.html">Service Manager</a></li>
          <li><a href="Real_Time_Stats_Help.html">Real-Time Stats</a></li>
        </ul>
      </li>
      <li><a href="security.html">Security</a></li>
      <li>
        <a href="config.html">Configuration</a>
	    <ul class="level2">
	      <li><a href="ServGeneral_Help.html">Server General</a></li>
          <li><a href="ServLog_Help.html">Server Log</a></li>
	      <li><a href="ServTuning_Help.html">Server Tuning</a></li>
	      <li><a href="ServSecurity_Help.html">Server Security</a></li>
          <li><a href="Cache_Help.html">Page Cache</a></li>
          <li><a href="PageSpeed_Config.html">PageSpeed Config</a></li>
          <li><a href="ExtApp_Help.html">External Apps</a></li>
          <ul class="level3">
            <li><a href="External_FCGI.html">Fast CGI App</a></li>
            <li><a href="External_FCGI_Auth.html">Fast CGI Authorizer</a></li>
            <li><a href="External_LSAPI.html">LSAPI App</a></li>
            <li><a href="External_Servlet.html">Servlet Engine</a></li>
            <li><a href="External_WS.html">Web Server</a></li>
            <li><a href="External_PL.html">Piped logger</a></li>
            <li><a href="External_LB.html">Load Balancer</a></li>
          </ul>
          <li><a href="ScriptHandler_Help.html">Script Handler</a></li>
          <li><span class="current"><a href="PHP_Help.html">PHP</a></span></li>
          <li><a href="App_Server_Help.html">App Server Settings</a></li>
          <li><a href="Listeners_General_Help.html">Listener General</a></li>
          <li><a href="Listeners_SSL_Help.html">Listener SSL</a></li>
          <li><a href="Templates_Help.html">Virtual Host Templates</a></li>
          <li><a href="VirtualHosts_Help.html">Virtual Host Basic</a></li>
          <li><a href="VHGeneral_Help.html">Virtual Host General</a></li>
          <li><a href="VHSecurity_Help.html">Virtual Host Security</a></li>
          <li><a href="VHSSL_Help.html">Virtual Host SSL</a></li>
          <li>
            <a href="VHPageSpeed_Config.html">Virtual Host PageSpeed Config</a>
          </li>
          <li><a href="Rewrite_Help.html">Rewrite</a></li>
          <li><a href="Context_Help.html">Context</a></li>
          <ul class="level3">
            <li><a href="Static_Context.html">Static Context</a></li>
            <li>
              <a href="Java_Web_App_Context.html">Java Web App Context</a>
            </li>
            <li><a href="Servlet_Context.html">Servlet Context</a></li>
            <li><a href="FCGI_Context.html">Fast CGI Context</a></li>
            <li><a href="LSAPI_Context.html">LSAPI Context</a></li>
            <li><a href="Proxy_Context.html">Proxy Context</a></li>
            <li><a href="CGI_Context.html">CGI Context</a></li>
            <li><a href="LB_Context.html">Load Balancer Context</a></li>
            <li><a href="Redirect_Context.html">Redirect Context</a></li>
            <li><a href="App_Server_Context.html">App Server Context</a></li>
            <li><a href="Rails_Context.html">Rack/Rails Context</a></li>
          </ul>
          <li><a href="VHAddOns_Help.html">Add-ons</a></li>
        </ul>
      </li>
      <li>
        <a href="webconsole.html">Web Console</a>
        <ul class="level2">
          <li><a href="AdminGeneral_Help.html">Admin Console General</a></li>
          <li><a href="AdminSecurity_Help.html">Admin Console Security</a></li>
          <li>
            <a href="AdminListeners_General_Help.html">
              Admin Listener General
            </a>
          </li>
          <li>
            <a href="AdminListeners_SSL_Help.html">Admin Listener SSL</a>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</aside>
<article class="contentwrapper ls-col-3-5 clearfix"><div class="nav-bar ls-spacer-micro-top"><div class="prev">&#171 <a href="ScriptHandler_Help.html">Script Handler</a></div><div class="center"><a href="config.html">Configuration</a></div><div class="next"><a href="App_Server_Help.html">App Server Settings</a> &#187;</div></div>
<h1>PHP</h1><section class="ls-spacer-small-bottom">The following settings provide an easier way to configure PHP handlers than the older External App + Script Handler
method. If the older configuration already exists, it will continue to work.
<br /><br />
LiteSpeed will also attempt to automatically detect PHP handlers for popular control panel environments. As such you may
not need to configure PHP handlers at all.</section>
<h2 id="top">Table of Contents</h2><section class="toc"><section class="toc-row"><header>PHP Global Configuration</header><p>
<a href="#detachedMode">Detached Mode</a> | <a href="#defaultPhpVer">Default PHP Versions</a> | <a href="#controlPanel">Control Panel</a> | <a href="#clAltPhp">CloudLinux Alt PHP</a> | <a href="#phpSuexecSuffixes">SuEXEC handlers</a></p></section>
<section class="toc-row"><header><a href="#phpHandlerDef">PHP Handler Definition</a></header><p>
<a href="#id">Handler ID</a> | <a href="#phpCommand">Command</a> | <a href="#phpSuffixes">Handled suffixes</a></p></section>
<section class="toc-row"><header><a href="#phpDefault">PHP Handler Defaults</a></header><p>
<a href="#maxConns">Max Connections</a> | <a href="#env">Environment</a> | <a href="#initTimeout">Initial Request Timeout (secs)</a> | <a href="#retryTimeout">Retry Timeout (secs)</a> | <a href="#pcKeepAliveTimeout">Connection Keepalive Timeout</a> | <a href="#respBuffer">Response Buffering</a> | <a href="#backlog">Back Log</a> | <a href="#runOnStartUp">Run On Start Up</a> | <a href="#extMaxIdleTime">Max Idle Time</a> | <a href="#extAppPriority">Priority</a> | <a href="#memSoftLimit">Memory Soft Limit (bytes)</a> | <a href="#memHardLimit">Memory Hard Limit (bytes)</a> | <a href="#procSoftLimit">Process Soft Limit</a> | <a href="#procHardLimit">Process Hard Limit</a></p></section>
</section>
<section><div class="helpitem"><article class="ls-helpitem"><div><header id="detachedMode"><h3>Detached Mode<span class="ls-permlink"><a href="#detachedMode"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Run PHP handler processes detached from the main LiteSpeed worker process.</p> <h4>Syntax</h4><p>Select from radio box</p> <h4>Tips</h4><p><span title="Performance" class="ls-icon-performance"></span> This has the advantage of allowing LiteSpeed to continue using detached PHP handler processes after restarting as opposed to having to start new PHP handler processes.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="defaultPhpVer"><h3>Default PHP Versions<span class="ls-permlink"><a href="#defaultPhpVer"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>A list of PHP versions to use as the default ".php" handler when a ".php" handler has not been explicitly set through a script handler or the "Handled suffixes" configuration.<br/><br/> The first available PHP handler, based on this list, will be used.</p> <h4>Syntax</h4><p>Comma separated list of phpXX versions where XX is the combined major and minor PHP version number.</p> <h4>Example</h4><div class="ls-example">php74, php73, php72, php71, php70, php56</div><h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> All versions from php52 to php56 and php70 to php74 are available.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="controlPanel"><h3>Control Panel<span class="ls-permlink"><a href="#controlPanel"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Auto detect PHP handlers based on the control panel used.<br/><br/> Default value is "auto detect".</p> <h4>Syntax</h4><p>Select from drop down list</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="clAltPhp"><h3>CloudLinux Alt PHP<span class="ls-permlink"><a href="#clAltPhp"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Detect cloudlinux alt PHP handlers.<br/><br/> Default value is "Yes".</p> <h4>Syntax</h4><p>Select from radio box</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="phpSuexecSuffixes"><h3>SuEXEC handlers<span class="ls-permlink"><a href="#phpSuexecSuffixes"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>List of file suffixes associated with handlers in suEXEC mode. All automatically discovered PHP handlers are in suEXEC mode.</p> <h4>Syntax</h4><p>Comma separated list of file suffixes</p> <h4>Example</h4><div class="ls-example">php, php5, php7</div><h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> This setting can be left as "Not Set" in most situations.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="phpHandlerDef"><h3>PHP Handler Definition<span class="ls-permlink"><a href="#phpHandlerDef"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Add a custom PHP handler by only specifying "Handler ID", "Command", and optional "Handled Suffixes". This method will add an external application and associated script handler automatically.<br/><br/> External applications explicitly defined at the server level with the same "Handler ID" or "Command" will have a higher priority.</p> <h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> These settings may not be needed as automatically detected PHP handlers should work properly.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="id"><h3>Handler ID<span class="ls-permlink"><a href="#id"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>A unique ID used to associate this PHP handler's command to it's handled suffixes. The ID itself will also be treated as a handled suffix.<br/><br/> Well known IDs include "phpXX", "alt-phpXX", and "ea-phpXX".</p> <h4>Example</h4><div class="ls-example">php72</div><h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> When adding a handler with ID "php72", files with suffix ".php72" as well as MIME type "application/x-httpd-php72" will be automatically handled by this handler.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="phpCommand"><h3>Command<span class="ls-permlink"><a href="#phpCommand"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Command used to start the PHP handler.</p> <h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> This is usually the path to an "lsphp" binary.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="phpSuffixes"><h3>Handled suffixes<span class="ls-permlink"><a href="#phpSuffixes"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Extra file "suffixes" to be handled by this handler.</p> <h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> If a script handler has been configured explicitly for a provided file suffix, this configuration will be ignored.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="phpDefault"><h3>PHP Handler Defaults<span class="ls-permlink"><a href="#phpDefault"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Set the default configuration for handlers defined via <span class="tagl"><a href="#phpHandlerDef">PHP Handler Definition</a></span> .</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="maxConns"><h3>Max Connections<span class="ls-permlink"><a href="#maxConns"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the maximum number of concurrent connections that can be established between the server and an external application. This setting controls how many requests can be processed concurrently by an external application, however, the real limit also depends on the external application itself. Setting this value higher will not help if the external application is not fast enough or cannot scale to a large number of concurrent requests.</p> <h4>Syntax</h4><p>Integer number</p> <h4>Tips</h4><p><span title="Performance" class="ls-icon-performance"></span> Setting a high value does not directly translate to higher performance. Setting the limit to a value that will not overload the external application will provide the best performance/throughput.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="env"><h3>Environment<span class="ls-permlink"><a href="#env"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies extra environment variables for the external application.</p> <h4>Syntax</h4><p>Key=value. Multiple variables can be separated by "ENTER"</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="initTimeout"><h3>Initial Request Timeout (secs)<span class="ls-permlink"><a href="#initTimeout"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the maximum time in seconds the server will wait for the external application to respond to the first request over a new established connection. If the server does not receive any data from the external application within this timeout limit, it will mark this connection as bad. This helps to identify communication problems with external applications as quickly as possible. If some requests take longer to process, increase this limit to avoid 503 error messages.</p> <h4>Syntax</h4><p>Integer number</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="retryTimeout"><h3>Retry Timeout (secs)<span class="ls-permlink"><a href="#retryTimeout"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the period of time that the server waits before retrying an external application that had a prior communication problem.</p> <h4>Syntax</h4><p>Integer number</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="pcKeepAliveTimeout"><h3>Connection Keepalive Timeout<span class="ls-permlink"><a href="#pcKeepAliveTimeout"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the maximum time in seconds to keep an idle persistent connection open.<br/><br/> When set to "-1", the connection will never timeout. When set to 0 or greater, the connection will be closed after this time in seconds has passed.</p> <h4>Syntax</h4><p>int</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="respBuffer"><h3>Response Buffering<span class="ls-permlink"><a href="#respBuffer"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies whether to buffer responses received from external applications. If a "nph-" (Non-Parsed-Header) script is detected, buffering is turned off for responses with full HTTP headers.</p> <h4>Syntax</h4><p>Select from drop down list</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="backlog"><h3>Back Log<span class="ls-permlink"><a href="#backlog"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the backlog of the listening socket.  Required if <span class="tagl"><a href="#autoStart">Start By Server</a></span> is enabled.</p> <h4>Syntax</h4><p>Integer number</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="runOnStartUp"><h3>Run On Start Up<span class="ls-permlink"><a href="#runOnStartUp"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies whether to start the external application at server start up. Only applicable to external applications that can manage their own child processes and where <span class="tagl"><a href="#instances">Instances</a></span> value is set to "1".<br/><br/> If enabled, external processes will be created at server startup instead of run-time.<br/><br/> When selecting "Yes (Detached mode)", all detached process can be restarted at the Server level or Virtual Host level by touching the '.lsphp_restart.txt' file under the $SERVER_ROOT/admin/tmp/ or $VH_ROOT/ directory respectively.<br/><br/> Default value: Yes (Detached mode)</p> <h4>Syntax</h4><p>Select from radio box</p> <h4>Tips</h4><p><span title="Performance" class="ls-icon-performance"></span> If the configured external process has significant startup overhead, like a Rails app, then this option should be enabled to decrease first page response time.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="extMaxIdleTime"><h3>Max Idle Time<span class="ls-permlink"><a href="#extMaxIdleTime"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the maximum idle time before an external application is stopped by the server, freeing idle resources. When set to "-1", the external application will not be stopped by the server unless running in ProcessGroup mode where idle external applications will be stopped after 30 seconds.<br/><br/> Default value: <span class="val">-1{/val}</p> <h4>Syntax</h4><p>Integer number</p> <h4>Tips</h4><p><span title="Performance" class="ls-icon-performance"></span> This feature is especially useful in the mass hosting environment where, in order to prevent files owned by one virtual host from being accessed by the external application scripts of another virtual host, many different applications are run at the same time in SetUID mode. Set this value low to prevent these external applications from idling unnecessarily.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="extAppPriority"><h3>Priority<span class="ls-permlink"><a href="#extAppPriority"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies priority of the external application process. Value ranges from <span class="val">-20</span> to <span class="val">20</span>. A lower number means a higher priority. An external application process cannot have a higher priority than the web server. If this priority is set to a lower number than the server's, the server's priority will be used for this value.</p> <h4>Syntax</h4><p>int</p> <h4>See Also</h4><p class="ls-text-small">Server <span class="tagl"><a href="ServGeneral_Help.html#serverPriority">Priority</a></span></p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="memSoftLimit"><h3>Memory Soft Limit (bytes)<span class="ls-permlink"><a href="#memSoftLimit"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Specifies the memory consumption limit in bytes for an external application process or an external application started by the server.<br/><br/> The main purpose of this limit is to prevent excessive memory usage because of software bugs or intentional attacks, not to impose a limit on normal usage. Make sure to leave enough head room, otherwise your application may fail and 503 error may be returned. It can be set at the server- level or at an individual external application level. The server-level limit will be used if it is not set at the individual application level.<br/><br/> The operating system's default setting will be used if the value is absent at both levels or set to <span class="val">0</span>.</p> <h4>Syntax</h4><p>Integer number</p> <h4>Tips</h4><p><span title="Attention" class="ls-icon-attention"></span> Do not over adjust this limit. This may result in 503 errors if your application needs more memory.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="memHardLimit"><h3>Memory Hard Limit (bytes)<span class="ls-permlink"><a href="#memHardLimit"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Much the same as <span class="tagl"><a href="#memSoftLimit">Memory Soft Limit (bytes)</a></span>, except the soft limit can be raised up to the hard limit from within a user process. The hard limit can be set at server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level.<br/><br/> The operating system's default will be used if the value is absent at both levels or set to <span class="val">0</span>.</p> <h4>Syntax</h4><p>Integer number</p> <h4>Tips</h4><p><span title="Attention" class="ls-icon-attention"></span> Do not over adjust this limit. This may result in 503 errors if your application need more memory.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="procSoftLimit"><h3>Process Soft Limit<span class="ls-permlink"><a href="#procSoftLimit"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Limits the total number of processes that can be created on behalf of a user. All existing processes will be counted against this limit, not just new processes to be started.<br/><br/> The limit can be set at the server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level. The operating system's default setting will be used if this value is 0 or absent at both levels.</p> <h4>Syntax</h4><p>Integer number</p> <h4>Tips</h4><p><span title="Information" class="ls-icon-info"></span> To control how many processes LSWS will make for users in mod_suEXEC mode, use the suEXEC Max Conn setting. PHP scripts can call for forking processes and the number of processes needed for normal functioning can be above the suEXEC Max Conn setting. The main purpose of this limit is as a last line of defense to prevent fork bombs and other attacks caused by PHP processes creating other processes.<br/><br/> Setting this setting too low can severely hurt functionality. The setting will thus be ignored below certain levels.<br/><br/> When <b>Run On Start Up</b> is set to "Yes (Daemon mode)", the actual process limit will be higher than this setting to make sure parent processes are not limited.</p> </article> </div>
<div class="helpitem"><article class="ls-helpitem"><div><header id="procHardLimit"><h3>Process Hard Limit<span class="ls-permlink"><a href="#procHardLimit"></a></span><span class="top"><a href="#top">&#8657;</a></span></h3></header></div><h4>Description</h4><p>Much the same as <span class="tagl"><a href="#procSoftLimit">Process Soft Limit</a></span>, except the soft limit can be raised up to the hard limit from within a user process. The hard limit can be set at the server level or at an individual external application level. The server-level limit will be used if it is not set at an individual application level. The operating system's default value will be used if the value is absent at both levels or set to <span class="val">0</span>.</p> <h4>Syntax</h4><p>Integer number</p> </article> </div>
</section>
</article><div  class="ls-col-1-1"><footer class="copyright">Copyright &copy; 2003-2020. <a href="https://www.litespeedtech.com">LiteSpeed Technologies Inc.</a> All rights reserved.</footer>
</div></div>
</body>
</html>