![별표/freepbx가 있는 PHP 및 zendguard](https://rvso.com/image/1585749/%EB%B3%84%ED%91%9C%2Ffreepbx%EA%B0%80%20%EC%9E%88%EB%8A%94%20PHP%20%EB%B0%8F%20zendguard.png)
저는 freepbx 버전 13을 실행 중이고 버전 14로 업그레이드하기 시작했습니다. 시스템은 CentOS 6 시스템에 있습니다. 시스템에는 먼저 5.6.40으로 업그레이드하고 zenguardloader 2.6.0을 설치한 PHP를 포함하여 특정 업그레이드가 필요했습니다. PHP를 실행하려고 하면 아래와 같은 결과가 나오므로 php와 zenguardloader 사이에 일종의 비호환성이 있다고 가정합니다.
[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
시스템이 다른 활성 사이트도 실행 중이어서 단순히 컴퓨터를 지우고 다시 시작할 수는 없으므로 문제를 패치하려면 답을 찾아야 합니다.
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
답변1
표트르 많은 욕설과 욕설을 한 후에 나는 기본적으로 시간을 낭비하고 있다는 결론을 내렸습니다. 컴퓨터에서 실행되는 다른 기능을 사용하여 Asterisk 및 FreePBX를 작동시킬 수 있었지만, 업데이트를 시도하면 시스템이 천천히 망가지고 엉망진창을 정리하려는 노력이 마음을 아프게 할 가치가 없었습니다. 나는 결국 포기했고 이제는 가상화를 실행하는 전용 머신을 갖게 되었고 10개의 가상 머신이 생겼고 모두가 함께 즐겁게 플레이하고 있습니다.