<small>{lang}wcf.acp.systemCheck.php.sha256.description{/lang}</small>
</dd>
</dl>
+
+ <dl{if $results[php][opcache] === false} class="formError"{/if}>
+ <dt>{lang}wcf.acp.systemCheck.php.opcache{/lang}</dt>
+ <dd>
+ {if $results[php][opcache] === true}
+ {@$statusOk} {lang}wcf.acp.systemCheck.pass{/lang}
+ {elseif $results[php][opcache] === null}
+ {@$statusSufficient} {lang}wcf.acp.systemCheck.notSupported{/lang}
+ {else}
+ {@$statusInsufficient} {lang}wcf.acp.systemCheck.php.opcache.broken{/lang}
+ {/if}
+ <small>{lang}wcf.acp.systemCheck.php.opcache.description{/lang}</small>
+ </dd>
+ </dl>
<dl{if !$results[php][gd][result]} class="formError"{/if}>
<dt>{lang}wcf.acp.systemCheck.php.gd{/lang}</dt>
'value' => '0',
],
'sha256' => false,
+ 'opcache' => null,
'version' => [
'result' => 'unsupported',
'value' => '0.0.0',
$this->results['php']['sha256'] = \in_array('sha256', \hash_algos());
}
- $this->results['status']['php'] = empty($this->results['php']['extension']) && $this->results['php']['sha256'];
+ try {
+ // Attempt to reset ourselves to perform a functional check.
+ WCF::resetZendOpcache(__FILE__);
+
+ if (\extension_loaded('Zend Opcache') && @\ini_get('opcache.enable')) {
+ $this->results['php']['opcache'] = \function_exists('opcache_reset') && \function_exists('opcache_invalidate');
+ }
+ } catch (\Exception $e) {
+ $this->results['php']['opcache'] = false;
+ }
+
+ $this->results['status']['php'] = empty($this->results['php']['extension'])
+ && $this->results['php']['sha256']
+ && $this->results['php']['opcache'] !== false;
}
protected function validatePhpMemoryLimit()
<item name="wcf.acp.systemCheck.directories.writable.description"><![CDATA[Einige Verzeichnisse werden zur Laufzeit durch die Software beschrieben, der PHP-Benutzer muss Schreibrechte haben.]]></item>
<item name="wcf.acp.systemCheck.php.gd"><![CDATA[Unterstützte Formate der GD-Bibliothek]]></item>
<item name="wcf.acp.systemCheck.php.gd.description"><![CDATA[Die GD-Bibliothek muss inklusive der Unterstützung der Formate „jpeg“, „png“ und „webp“ installiert sein.]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache"><![CDATA[OPcache]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache.description"><![CDATA[PHPs OPcache beschleunigt die Bearbeitung von Anfragen, indem der vorverarbeitete Programmcode gecached wird. Bei aktiviertem OPcache müssen die Verwaltungsfunktionen <kbd>opcache_reset()</kbd> und <kbd>opcache_invalidate()</kbd> zur Verfügung stehen, damit der Cache nach einer Aktualisierung des Programmcodes zuverlässig neu aufgebaut werden kann.]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache.broken"><![CDATA[Fehlerhaft – die Verwaltungsfunktionen sind nicht verfügbar]]></item>
</category>
<category name="wcf.acp.updateServer">
<item name="wcf.acp.updateServer.add"><![CDATA[Server hinzufügen]]></item>
<item name="wcf.acp.systemCheck.directories.writable.description"><![CDATA[Some directories are being written to during the normal operation. The user that runs the PHP process must have write access.]]></item>
<item name="wcf.acp.systemCheck.php.gd"><![CDATA[Supported formats of the GD library]]></item>
<item name="wcf.acp.systemCheck.php.gd.description"><![CDATA[The GD library must be installed with support for the formats “jpeg”, “png” and “webp”.]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache"><![CDATA[OPcache]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache.description"><![CDATA[PHP’s OPcache improves request processing performance by caching the preprocessed application code. If OPcache is enabled the management functions <kbd>opcache_reset()</kbd> and <kbd>opcache_invalidate()</kbd> need to be available to be able to reliably reset the cache when the application code is updated.]]></item>
+ <item name="wcf.acp.systemCheck.php.opcache.broken"><![CDATA[Broken – the management functions are unavailable]]></item>
</category>
<category name="wcf.acp.updateServer">
<item name="wcf.acp.updateServer.add"><![CDATA[Add Server]]></item>