演示如何调试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”:
/ -i‘-前缀=/opt/ php -7.1’‘-with-pdo-pgsql’‘-with-zlib-dir’-with-freetype-dir‘-启用-libxml-dir=/usr’‘-启用-soap’-启用-intl‘’-启用-curl‘’-with-mcrypt‘’-with-mcrypt‘-with-mcrypt’‘-with-mcrypt’‘。“-with-gd”-with-pgsql‘-禁用-rpath’-启用-内联-优化‘-与-bz2 2’‘-with-zlib’-启用--套接字‘-启用-sysvsem’‘-启用-sysvshm’‘-启用-pcntl’-启用-mbregex‘’-启用-exif‘-启用-bc计量’‘-与-mhash’‘-启用-zip‘’-with-pcre-regex‘’-with-pdo-mysqli‘’-with-mysqli‘-with-mysql-sock=/var/run/mysql/mysql.sock’-with-xpm-dir=/usr‘-with-webp=/usr’-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:26:26
在我的例子中,受影响的模块是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修复:
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修复:
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修复:
重新启动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://unix.stackexchange.com/questions/600966
复制相似问题