演示如何调试PHP模块未加载到PHP中的问题。
我使用OpenSUSE v42.2linux操作系统,与,PHPV7.1,Mysql一起使用。
因为它没有提供我需要的PHPV7.1,所以我从源代码构建了PHPV7.1。使用PHP。
我把它装进
/opt/php-7.1/php.ini位于:
/opt/php-7.1/lib/php.ini我发现,opcache被安装到
/opt/php-7.1/lib64/extensions/no-debug-non-zts-20160303/opcache.so我编辑了php.ini并添加了以下行:
zend_extension=/opt/php-7.1/lib64/extensions/no-debug-non-zts-20160303/opcache.so重新启动:
systemctl restart php-7.1-fpm.service
systemctl restart apache2.service但我还是得到了以下结果:
php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]中缺少opcache。
但在配置中有“--启用--opcache”:
/
'--前缀=/opt/ php -7.1‘’-with- -i -pgsql‘’-with-zlib-dir‘-with-freetype-dir’-启用-libxml-dir=/usr‘-启用-soap’-enable-intl‘-enable- -i’‘-with-curl’‘-with-curl’‘-with-libxml-dir=/usr’‘-启用-soap’-enable-intl‘-enable--i’‘-with-curl’‘--with-mcrypt‘-with-gd’-with-pgsql‘-禁用-rpath’-启用-内联-优化‘-with-zlib’-with-zlib‘-启用-sysvsem’-启用-sysvshm‘’-启用-pcntl‘-启用-mbregex’-启用-exif‘-启用-bcmath’‘-with-mhash’‘-启用-zip‘-with-pcre-regex’-with-pdo-mysqli‘-with-mysqli’-with sock=/var/run/mysql.sock‘-with-xpm-dir=/usr’-with-webp-dir=/usr‘-with-jpeg-dir=/usr’-with-png-dir=/usr‘-启用-gd-本机-ttf’-ttf‘’-with-jpeg-dir=/usr‘-with-png-dir=/usr’‘--启用-gd-本机-ttf’-openssl‘’-with-fpm-user=wwwrun‘’-with-fpm-group=www‘-with-libdir=lib64 64’-启用-ftp‘-with-imap’-with-imap-ssl‘-with-kerberos’-with-gettext‘-with-xmlrpc’‘-with-xsl’-启用-opcache‘--启用-fpm’。
我还试图说明如下:
zend_extension=opcache但我也得到了同样的结果,仍然失踪。
如何修复使opcache启用?
发布于 2020-07-29 23:23:13
在我的例子中,受影响的模块是opcache PHP模块。
解决方案:
我注意到,在phpinfo中,"display_errors“本地值是关闭的,主值是打开的。因为主值来自php.ini,并且在/opt/php-7.1/lib/php.ini中有"display_errors = Off",这意味着没有加载这个php.ini。
还发现,"Loaded Configuration File“字段值为空,因此它也显示没有加载php.ini。
但是php.ini位于(并且应该是从这里加载):/opt/php-7.1/lib/php.ini。
此外,我注意到,在phpinfo中,"Configuration File (php.ini) Path“设置为:"/opt/php-7.1/lib64”,这意味着php.ini应该位于/opt/php-7.1/lib64/目录下。
Step1 fix:
copy php.ini
from
/opt/php-7.1/lib/php.ini
to
/opt/php-7.1/lib64/php.ini在命令行中:
cp -p /opt/php-7.1/lib/php.ini /opt/php-7.1/lib64/php.ini还注意到,php是用'--with-libdir=lib64'参数编译的。
这可能意味着,应该在这个目录下找到"opcache.so“文件。
目前,"opcache.so“位于目录"/opt/php-7.1/lib64/extensions/no-debug-non-zts-20160303/”中。我想把"opcache.so“和"/opt/php-7.1/lib64/extensions/”放在一起就足够了。这成了最后的解决办法。
Step2 fix:
copy opcache.a & opcache.so
from
/opt/php-7.1/lib64/extensions/no-debug-non-zts-20160303/
to
/opt/php-7.1/lib64/extensions/在命令行中:
cp -p /opt/php-7.1/lib64/extensions/no-debug-non-zts-20160303/opcache.* /opt/php-7.1/lib64/extensions/Step3 fix:
重新启动Apache &PHP(可选,如果使用):
service apache2 restart
service php-7.1-fpm restart在完成这三个修复步骤之后,PHP。
结果:
php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcachehttps://stackoverflow.com/questions/63151077
复制相似问题