php and zendguard with asterisk / freepbx


Im running freepbx version 13 and started to upgrade to version 14. System is on a CentOS 6 system. The system required certain upgrades first including php which I've upgraded to 5.6.40 and installed zenguardloader 2.6.0 I'm assuming there is some sort of incompatibility between php and zenguardloader as I get the below when I try to run php.

[root@bluepukeko ~]# php -a
Failed loading /usr/lib64/php/modules/  /usr/lib64/php/modules/ undefined symbol: zend_get_hash_value
Interactive shell

php > echo "Zend engine version: " . zend_version();
Zend engine version: 2.6.0
php > quit

The system is also running other active sites so I can't simply wipe the machine and start again, so I need to find an answer to patch the problem.

copy ZendGuard.ini

; Enable ZendGuard loader module

; Enables loading encoded scripts. The default value is On

; Disable license checks (for performance reasons)

; The Obfuscation level supported by Zend Guard Loader. The levels are detailed in the official Zend Guard Documentation. 0 - no obfuscation is enabled

Copy opcache.ini

; Enable Zend OPcache extension module

; Determines if Zend OPCache is enabled

; Determines if Zend OPCache is enabled for the CLI version of PHP

; The OPcache shared memory storage size.

; The amount of memory for interned strings in Mbytes.

; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.

; The maximum percentage of "wasted" memory until a restart is scheduled.

; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.

; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.

; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)

; Enables or disables file search in include_path optimization

; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.

; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"
; may be always stored (save_comments=1), but not loaded by applications
; that don't need them anyway.

; If enabled, a fast shutdown sequence is used for the accelerated code

; Allow file existence override (file_exists, etc.) performance feature.

; A bitmask, where each bit enables or disables the appropriate OPcache
; passes


; The location of the OPcache blacklist file (wildcards allowed).
; Each OPcache blacklist file is a text file that holds the names of files
; that should not be accelerated.

; Allows exclusion of large files from being cached. By default all files
; are cached.

; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.

; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.

; OPcache error_log file name. Empty string assumes "stderr".

; All OPcache errors go to the Web server log.
; By default, only fatal errors (level 0) or errors (level 1) are logged.
; You can also enable warnings (level 2), info messages (level 3) or
; debug messages (level 4).

; Preferred Shared Memory back-end. Leave empty and let the system decide.

; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
asked on Super User Mar 22, 2019 by Robert Dew • edited Mar 22, 2019 by music2myear

2 Answers


Piotr After much swearing and cursing I basically concluded that I was just wasting my time. While I could get Asterisk and FreePBX operating with a other functions running on the machine, when I tried to do any update the system slowly just screwed itself and the effort of cleaning up the mess just wasn't worth the heart ache. I eventually threw in the towel and now have a dedicated machine running virtulisation giving me 10 virtual machine and all are playing happily together.

answered on Super User Jul 29, 2019 by Robert Dew

I have the same problem. I Have a nice VPS split into shared packages and I wanted to include Asterisk and FreePBX as a package based on user hosting type but also have active sites on.

So far I only found out that in order to use asterisk the whole thing needs to be wiped clean and only run asterisk on it. Seem, from what I found, Asterisk cannot run on a shared server as it need root access.

If I'm wrong, I'll welcome how-to install asterisk on shared CentOS server.

answered on Super User May 12, 2019 by Piotr Miecznikowski

User contributions licensed under CC BY-SA 3.0