![php und Zendguard mit Asterisk / FreePBX](https://rvso.com/image/1585749/php%20und%20Zendguard%20mit%20Asterisk%20%2F%20FreePBX.png)
Ich verwende Freepbx Version 13 und habe mit dem Upgrade auf Version 14 begonnen. Das System läuft auf einem CentOS 6-System. Das System benötigte zunächst bestimmte Upgrades, darunter PHP, das ich auf 5.6.40 aktualisiert und Zenguardloader 2.6.0 installiert habe. Ich gehe davon aus, dass eine Art Inkompatibilität zwischen PHP und Zenguardloader besteht, da ich Folgendes erhalte, wenn ich versuche, PHP auszuführen.
[root@bluepukeko ~]# php -a
Failed loading /usr/lib64/php/modules/ZendGuardLoader.so: /usr/lib64/php/modules/ZendGuardLoader.so: undefined symbol: zend_get_hash_value
Interactive shell
php > echo "Zend engine version: " . zend_version();
Zend engine version: 2.6.0
php > quit
Auf dem System laufen auch andere aktive Sites, daher kann ich den Rechner nicht einfach löschen und neu starten. Ich muss also eine Lösung finden, um das Problem zu beheben.
copy ZendGuard.ini
[Zend]
; Enable ZendGuard loader module
zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so
; Enables loading encoded scripts. The default value is On
zend_loader.enable=1
; Disable license checks (for performance reasons)
zend_loader.disable_licensing=0
; The Obfuscation level supported by Zend Guard Loader. The levels are detailed in the official Zend Guard Documentation. 0 - no obfuscation is enabled
zend_loader.obfuscation_level_support=0
Copy opcache.ini
; Enable Zend OPcache extension module
zend_extension=/usr/lib64/php/modules/opcache.so
; Determines if Zend OPCache is enabled
opcache.enable=1
; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0
; The OPcache shared memory storage size.
opcache.memory_consumption=128
; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=8
; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.
opcache.max_accelerated_files=4000
; The maximum percentage of "wasted" memory until a restart is scheduled.
;opcache.max_wasted_percentage=5
; 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.
;opcache.use_cwd=1
; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
;opcache.validate_timestamps=1
; 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)
;opcache.revalidate_freq=2
; Enables or disables file search in include_path optimization
;opcache.revalidate_path=0
; If disabled, all PHPDoc comments are dropped from the code to reduce the
; size of the optimized code.
;opcache.save_comments=1
; 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.
;opcache.load_comments=1
; If enabled, a fast shutdown sequence is used for the accelerated code
opcache.fast_shutdown=1
; Allow file existence override (file_exists, etc.) performance feature.
;opcache.enable_file_override=0
; A bitmask, where each bit enables or disables the appropriate OPcache
; passes
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
; 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.
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
; Allows exclusion of large files from being cached. By default all files
; are cached.
;opcache.max_file_size=0
; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
;opcache.consistency_checks=0
; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
;opcache.force_restart_timeout=180
; OPcache error_log file name. Empty string assumes "stderr".
;opcache.error_log=
; 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).
;opcache.log_verbosity_level=1
; Preferred Shared Memory back-end. Leave empty and let the system decide.
;opcache.preferred_memory_model=
; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
;opcache.protect_memory=0
Antwort1
Piotr Nach vielem Fluchen und Schimpfen kam ich im Grunde zu dem Schluss, dass ich nur meine Zeit verschwendete. Ich konnte zwar Asterisk und FreePBX mit anderen auf der Maschine laufenden Funktionen zum Laufen bringen, aber als ich versuchte, ein Update durchzuführen, machte das System langsam den Geist auf und der Aufwand, das Chaos zu beseitigen, war den Kummer einfach nicht wert. Ich habe schließlich das Handtuch geworfen und habe jetzt eine dedizierte Maschine, auf der Virtualisierung läuft, was mir 10 virtuelle Maschinen gibt und alle spielen fröhlich miteinander.