apc.so és mysqlnd.so file-ok pótlása

 ( kalmarr | 2015. október 6., kedd - 14:06 )

Sziasztok,

a következő a problémám. Egy I-MSCP hostingon, egy NGNIX PHP-FPM fut.

Rendszer:
Distributor ID: Debian
Description: Debian GNU/Linux 8.2 (jessie)
Release: 8.2
Codename: jessie

Az apc-t a "#pecl install apc" tettem fel a végén kaptam hibát:
---
...
/tmp/pear/temp/APC/apc_cache.c: In function '_apc_cache_user_update':
/tmp/pear/temp/APC/apc_cache.c:818:63: error: 'IS_CONSTANT_INDEX' undeclared (first use in this function)
switch(Z_TYPE_P((*slot)->value->data.user.val) & ~IS_CONSTANT_INDEX) {
^
/tmp/pear/temp/APC/apc_cache.c:818:63: note: each undeclared identifier is reported only once for each function it appears in
/tmp/pear/temp/APC/apc_cache.c:820:22: error: 'IS_CONSTANT_ARRAY' undeclared (first use in this function)
case IS_CONSTANT_ARRAY:
^
Makefile:186: recipe for target 'apc_cache.lo' failed
make: *** [apc_cache.lo] Error 1
ERROR: `make' failed
---
Viszont elvileg fut, de hibával.

# php -m
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/mysqlnd.so' - /usr/lib/php5/20131226/mysqlnd.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/apc.so' - /usr/lib/php5/20131226/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
[PHP Modules]
apc
apcu
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
intl
json
libxml
mbstring
mcrypt
memcached
mhash
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache
---
Ellenőriztem a jelzett helyet:
-rw-r--r-- 1 root root 102K okt 23 2014 apcu.so
-rw-r--r-- 1 root root 88K szept 7 15:49 curl.so
-rw-r--r-- 1 root root 112K szept 7 15:49 gd.so
-rw-r--r-- 1 root root 178K okt 4 16:07 gnupg.so
-rw-r--r-- 1 root root 108K szept 7 15:49 imap.so
-rw-r--r-- 1 root root 406K szept 7 15:49 intl.so
-rw-r--r-- 1 root root 39K aug 1 2014 json.so
-rw-r--r-- 1 root root 47K szept 7 15:49 mcrypt.so
-rw-r--r-- 1 root root 106K okt 25 2014 memcached.so
-rw-r--r-- 1 root root 152K szept 7 15:49 mysqli.so
-rw-r--r-- 1 root root 60K szept 7 15:49 mysql.so
-rw-r--r-- 1 root root 157K szept 7 15:49 opcache.so
-rw-r--r-- 1 root root 36K szept 7 15:49 pdo_mysql.so
-rw-r--r-- 1 root root 116K szept 7 15:49 pdo.so
-rw-r--r-- 1 root root 55K okt 4 15:54 uploadprogress.so

Itt valóban nincs meg a két file: mysqlnd.so;apc.so
Viszont az APC "elvileg hibátlanul megy és a szerver is.

http://www.eupalyazat.info/php.php
http://www.eupalyazat.info/apc/apc.php

#cat /etc/php5/mods-available/apc.ini

extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=1000M
apc.ttl=86400
apc.write_lock = 1
apc.slam_defense = 0

apc.enable_cli=1
apc.stat=1
apc.max_file_size=1M
apc.mmap_file_mask=/var/tmp/apc/apc.XXXXXX
apc.num_files_hint=15360
apc.user_entries_hint=15360
apc.optimization=0
apc.localcache=1
apc.localcache.size=256
apc.lazy_functions=1
apc.lazy_classes=1
apc.gc_ttl=3600

Kérdésem, hogy hol van a két file, hogyan tud működni, ha nincsenek meg, illetve hogyan lehet kijavítani a hibát?

Köszi előre is!

Kalmi

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

mit ad vissza?
dpkg -l |grep php5

hiányoznak esetleg?
php5-apc
php5-mysql

/etc/php5/conf.d -ben milyen ini-k vannak?


dpkg -l |grep php5
ii dh-php5 0.2 all debhelper add-on to handle PHP PECL extensions
ii php5 5.6.13+dfsg-0+deb8u1 all server-side, HTML-embedded scripting language (metapackage)
ii php5-apcu 4.0.7-1 amd64 APC User Cache for PHP 5
ii php5-cgi 5.6.13+dfsg-0+deb8u1 amd64 server-side, HTML-embedded scripting language (CGI binary)
ii php5-cli 5.6.13+dfsg-0+deb8u1 amd64 command-line interpreter for the php5 scripting language
ii php5-common 5.6.13+dfsg-0+deb8u1 amd64 Common files for packages built from the php5 source
ii php5-curl 5.6.13+dfsg-0+deb8u1 amd64 CURL module for php5
ii php5-dev 5.6.13+dfsg-0+deb8u1 amd64 Files for PHP5 module development
ii php5-fpm 5.6.13+dfsg-0+deb8u1 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii php5-gd 5.6.13+dfsg-0+deb8u1 amd64 GD module for php5
ii php5-imap 5.6.13+dfsg-0+deb8u1 amd64 IMAP module for php5
ii php5-intl 5.6.13+dfsg-0+deb8u1 amd64 internationalisation module for php5
ii php5-json 1.3.6-1 amd64 JSON module for php5
ii php5-mcrypt 5.6.13+dfsg-0+deb8u1 amd64 MCrypt module for php5
ii php5-memcached 2.2.0-2 amd64 memcached extension module for PHP5, uses libmemcached
ii php5-mysql 5.6.13+dfsg-0+deb8u1 amd64 MySQL module for php5
rc php5-mysqlnd 5.6.13+dfsg-0+deb8u1 amd64 MySQL module for php5 (Native Driver)


#:/etc/php5/cli/conf.d$ ls
összesen 4,0K
lrwxrwxrwx 1 root root 32 okt 4 14:36 05-opcache.ini -> ../../mods-available/opcache.ini
lrwxrwxrwx 1 root root 32 okt 5 10:36 10-mysqlnd.ini -> ../../mods-available/mysqlnd.ini
lrwxrwxrwx 1 root root 28 okt 4 14:36 10-pdo.ini -> ../../mods-available/pdo.ini
-rw-r--r-- 1 root root 394 okt 6 13:01 20-apc.ini
lrwxrwxrwx 1 root root 29 okt 4 15:47 20-apcu.ini -> ../../mods-available/apcu.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-curl.ini -> ../../mods-available/curl.ini
lrwxrwxrwx 1 root root 27 okt 4 14:36 20-gd.ini -> ../../mods-available/gd.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-imap.ini -> ../../mods-available/imap.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-intl.ini -> ../../mods-available/intl.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-json.ini -> ../../mods-available/json.ini
lrwxrwxrwx 1 root root 31 okt 4 14:36 20-mcrypt.ini -> ../../mods-available/mcrypt.ini
lrwxrwxrwx 1 root root 34 okt 4 16:28 20-memcached.ini -> ../../mods-available/memcached.ini
lrwxrwxrwx 1 root root 31 okt 5 00:18 20-mysqli.ini -> ../../mods-available/mysqli.ini
lrwxrwxrwx 1 root root 30 okt 5 00:18 20-mysql.ini -> ../../mods-available/mysql.ini
lrwxrwxrwx 1 root root 34 okt 5 00:18 20-pdo_mysql.ini -> ../../mods-available/pdo_mysql.ini


#/etc/php5/fpm/conf.d$ ls
összesen 0
lrwxrwxrwx 1 root root 32 okt 4 14:36 05-opcache.ini -> ../../mods-available/opcache.ini
lrwxrwxrwx 1 root root 32 okt 5 10:36 10-mysqlnd.ini -> ../../mods-available/mysqlnd.ini
lrwxrwxrwx 1 root root 28 okt 4 14:36 10-pdo.ini -> ../../mods-available/pdo.ini
lrwxrwxrwx 1 root root 28 okt 5 10:36 20-apc.ini -> ../../mods-available/apc.ini
lrwxrwxrwx 1 root root 29 okt 4 15:47 20-apcu.ini -> ../../mods-available/apcu.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-curl.ini -> ../../mods-available/curl.ini
lrwxrwxrwx 1 root root 27 okt 4 14:36 20-gd.ini -> ../../mods-available/gd.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-imap.ini -> ../../mods-available/imap.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-intl.ini -> ../../mods-available/intl.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-json.ini -> ../../mods-available/json.ini
lrwxrwxrwx 1 root root 31 okt 4 14:36 20-mcrypt.ini -> ../../mods-available/mcrypt.ini
lrwxrwxrwx 1 root root 34 okt 4 16:28 20-memcached.ini -> ../../mods-available/memcached.ini
lrwxrwxrwx 1 root root 31 okt 5 00:18 20-mysqli.ini -> ../../mods-available/mysqli.ini
lrwxrwxrwx 1 root root 30 okt 5 00:18 20-mysql.ini -> ../../mods-available/mysql.ini
lrwxrwxrwx 1 root root 34 okt 5 00:18 20-pdo_mysql.ini -> ../../mods-available/pdo_mysql.ini


#/etc/php5/cgi/conf.d$ ls
összesen 0
lrwxrwxrwx 1 root root 32 okt 4 14:36 05-opcache.ini -> ../../mods-available/opcache.ini
lrwxrwxrwx 1 root root 32 okt 5 10:36 10-mysqlnd.ini -> ../../mods-available/mysqlnd.ini
lrwxrwxrwx 1 root root 28 okt 4 14:36 10-pdo.ini -> ../../mods-available/pdo.ini
lrwxrwxrwx 1 root root 28 okt 5 10:36 20-apc.ini -> ../../mods-available/apc.ini
lrwxrwxrwx 1 root root 29 okt 4 15:47 20-apcu.ini -> ../../mods-available/apcu.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-curl.ini -> ../../mods-available/curl.ini
lrwxrwxrwx 1 root root 27 okt 4 14:36 20-gd.ini -> ../../mods-available/gd.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-imap.ini -> ../../mods-available/imap.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-intl.ini -> ../../mods-available/intl.ini
lrwxrwxrwx 1 root root 29 okt 4 14:36 20-json.ini -> ../../mods-available/json.ini
lrwxrwxrwx 1 root root 31 okt 4 14:36 20-mcrypt.ini -> ../../mods-available/mcrypt.ini
lrwxrwxrwx 1 root root 34 okt 4 16:28 20-memcached.ini -> ../../mods-available/memcached.ini
lrwxrwxrwx 1 root root 31 okt 5 00:18 20-mysqli.ini -> ../../mods-available/mysqli.ini
lrwxrwxrwx 1 root root 30 okt 5 00:18 20-mysql.ini -> ../../mods-available/mysql.ini
lrwxrwxrwx 1 root root 34 okt 5 00:18 20-pdo_mysql.ini -> ../../mods-available/pdo_mysql.ini


#:/etc/php5/mods-available$ ls
összesen 64K
-rw-r--r-- 1 root root 385 okt 6 13:34 apc.ini
-rw-r--r-- 1 root root 18 okt 23 2014 apcu.ini
-rw-r--r-- 1 root root 68 szept 7 15:49 curl.ini
-rw-r--r-- 1 root root 64 szept 7 15:49 gd.ini
-rw-r--r-- 1 root root 68 szept 7 15:49 imap.ini
-rw-r--r-- 1 root root 84 szept 7 15:49 intl.ini
-rw-r--r-- 1 root root 68 aug 1 2014 json.ini
-rw-r--r-- 1 root root 72 szept 7 15:49 mcrypt.ini
-rw-r--r-- 1 root root 70 okt 25 2014 memcached.ini
-rw-r--r-- 1 root root 71 szept 7 15:49 mysqli.ini
-rw-r--r-- 1 root root 70 szept 7 15:49 mysql.ini
-rw-r--r-- 1 root root 72 szept 7 15:49 mysqlnd.ini
-rw-r--r-- 1 root root 83 szept 7 15:49 opcache.ini
-rw-r--r-- 1 root root 66 szept 7 15:49 pdo.ini
-rw-r--r-- 1 root root 74 szept 7 15:49 pdo_mysql.ini
-rw-r--r-- 1 root root 28 okt 4 15:55 uploadprogress.ini

Amit nem igazán értek még az FPM-nél, hogy melyik könyvtárat kell nézni, mivel mind a három (cgi, cli, fpm) egy könyvtárra mutat (mods-available).

A kérdéses fileok elvileg telepítve vannak, mert akkor nem kellene hogy fusson pl: a Drupal, vagy az APC (mellékelt linkeken). Pont ez a problémám, hogy hogy hiányozhat apc.so, ha fut a rendszeren. :(

Nem tudom, hanyas PHP van a Debianban mostansag, de feltetelezem, hogy 5.3-nal ujabb. Ezen feltetelezes menten kovetkezzen egy kis PHP-s fejtagitas.

Az APC modul eredetileg ketfele feladatot latott el, egyreszt egy opcode cache volt, masreszt pedig egy memcached-szeru memoria adatbaziskent is uzemelt.

A PHP 5.4 megjelenesevel azonban az APC modul maga ropkeptelenne valt, mert elegge atszerveztek a kodot ahhoz, hogy az opcode cache valtozatlanul mar ne mukodhessen, viszont a fejleszto ugy dontott, hogy ezt a reszet mar nem is tamogatja a dolognak, mert a PHP 5.5-ben nativan megjelent az opcode cache kepessege, igy a modulbol csak a felhasznaloi adatok cachelese maradt meg, ez az apcu modul, ez az, ami telepitve is van a rendszerben es ez az a modul, amit a Drupal APC-kent ertekel, hiszen a PHP nyelvi oldali API teljes mertekben valtozatlan maradt.

PHP 5.4 alatt az APC modulra nincs szukseg es PECL-bol nem is forgathato le, mert inkompatibilis ezen PHP verziokkal. A Debian altal szallitott php5-apcu modul valtja le a user cache funkcionalitasat, ha pedig valami utos opcode cache-re vagysz, erdemes lehet megnezni a Zend OPCache kepessegeit, vagy az XCache funkcionalitasat. Ha csak a memcache-szeru funkciokra van szukseged, arra pedig az apcu modul ad tamogatast, mely az altalad biztositott adatok alapjan a rendszeredben telepitve van, es zavartalanul mukodik.

Ami a mysqlnd-t illeti, szinten nem tudom, ki es miert akarja barki bantani, mikor van egy engedelyezett mysql modul betoltve. A mysqlnd gyakorlatilag a mysql modul egy variansa.

Kicsit azt erzem, hogy valaki nekiallt ezen a gepen fixalni valamit, ami amugy teljes mertekben jol mukodik, es hozza sem kellett volna nyulni.

Szerk: most neztem meg jobban a kimenetet: van Zend OPcache a gepen, alapbol engedelyezve is van, ez levaltja az APC opcode cache funkcionalitasat, vagyis a mostani apcu modul minden tekintetben elegendo szamodra.

--
Blog | @hron84
Üzemeltető macik

Azért is írok kezdő LINUX-ba, mert erősen kezdő módon ismerkedek még a LINUX-al :) a PHP ismereteim is elég korlátosak így nagyon köszönöm a segítséget, mert nem igazán látom át 100%-os megbízhatósággal a témát (a leírtakból megértettem, hogy miért bajlódtam az APC-vel köszönöm).
Alapvetően ezek a cachek a Drupal miatt kellenek csak, amivel valóban felgyorsulnak az oldalak. Amikor néztem a cacheket, akkor ez tűnt a legnépszerűbbnek (APC és memcahce). Így igazából ezért teszem fel a rendszerbe. A Zend OPCache egyáltalán nem ismerem és nem tudom, hogy a Drupal mit szólna hozzá.
Tehát, akkor jól értem, hogy az APC modult nekem likvidálnom kell, ebből adódóan a kérdésem, hogy ezt hogyan lehet szépen eltakarítani, van-e valami extra tudás amit kellene tennem, vagy elég "pecl uninstall apc" és ennyi csak?

A másik mysqlnd.so modullal pedig mit kellene tennem, azzal mi lehet?

A drupal miatt is előjön a hiba:

#drush update-pm
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/mysqlnd.so' - /usr/lib/php5/20131226/mysqlnd.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/apc.so' - /usr/lib/php5/20131226/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
The drush command 'update-pm' could not be found. Run `drush cache-clear drush` to clear the commandfile cache if you have installed new extensions. [error]

Az update-pm azt hiszem nem ervenyes drush parancs.
--
Blog | @hron84
Üzemeltető macik

Neneenene. Nem kell likvidalnod, hiszen fel sem ment

Azt a ket ini fajlt kell likvidalnod, amit legyartottal a mods folderbe, az apc.ini-t meg a mysqlnd.ini-t, es ennyi, meg fog szunni a warning.

A mysqlnd.so modulrol pedig irtam: nincs vele teendod. Nincs, de nem is hianyzik senkinek, hiszen az csak feltunt volna, ha a drupal nem tud MySQL-be dolgozni, nem? :-)
--
Blog | @hron84
Üzemeltető macik

Egy picit értetlen leszek :)

Na a következők vannak mods-available alatt:

/etc/php5/mods-available$ ls
összesen 56K
-rw-r--r-- 1 root root 387 okt 7 14:32 apcu.ini
-rw-r--r-- 1 root root 68 szept 7 15:49 curl.ini
-rw-r--r-- 1 root root 64 szept 7 15:49 gd.ini
-rw-r--r-- 1 root root 68 szept 7 15:49 imap.ini
-rw-r--r-- 1 root root 84 szept 7 15:49 intl.ini
-rw-r--r-- 1 root root 68 aug 1 2014 json.ini
-rw-r--r-- 1 root root 72 szept 7 15:49 mcrypt.ini
-rw-r--r-- 1 root root 70 okt 25 2014 memcached.ini
-rw-r--r-- 1 root root 71 szept 7 15:49 mysqli.ini
-rw-r--r-- 1 root root 70 szept 7 15:49 mysql.ini
-rw-r--r-- 1 root root 83 szept 7 15:49 opcache.ini
-rw-r--r-- 1 root root 66 szept 7 15:49 pdo.ini
-rw-r--r-- 1 root root 74 szept 7 15:49 pdo_mysql.ini
-rw-r--r-- 1 root root 28 okt 4 15:55 uploadprogress.ini

Az apcu.ini beállításai:

/etc/php5/mods-available$ cat apcu.ini

extension=apcu.so

apc.enabled=0
apc.shm_segments=1
apc.shm_size=1000M
apc.ttl=86400
apc.write_lock = 1
apc.slam_defense = 0

apc.enable_cli=1
apc.stat=1
apc.max_file_size=2M
apc.mmap_file_mask=/var/tmp/apc/apc.XXXXXX
apc.num_files_hint=15360
apc.user_entries_hint=15360
apc.optimization=0
apc.localcache=1
apc.localcache.size=256
apc.lazy_functions=1
apc.lazy_classes=1
apc.gc_ttl=3600

apc.enabled=0 - Kikapcsoltam.

Így viszont nem fut a teszt oldala - http://www.eupalyazat.info/apc/apc.php (nem tudom, hogy ennek a tesztnek mi a hivatalos oldala https://community.centminmod.com/data/attachment-files/2014/05/171_apcu_stats00.png), ha apc.enabled=1, akkor fut az oldal (ugyan azzal a hibával).

A mysqlnd.ini kivételével, valóban eltűnt a hiba az egyik, de az apc.ini meg van :(

# drush update-pm
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/apc.so' - /usr/lib/php5/20131226/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
The drush command 'update-pm' could not be found. Run `drush cache-clear drush` to clear the commandfile cache if you have installed new extensions. [error]

#drush cache-clear drush
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/apc.so' - /usr/lib/php5/20131226/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
'drush' cache was cleared.

Kérdés, hol futhat még az apc, hogyan lehet megtalálni?

Akkor leforditom: torold ki az apc.ini-t (az apcu.ini-t NE, ismetlem, NE torold ki) es a "hiba" meg fog szunni.

Az apcu.ini-ben pedig kapcsold szepen vissza az apc.enabled-et, mert anelkul eltorod a Drupalodat is.
--
Blog | @hron84
Üzemeltető macik

Igen ezt csináltam, de a hiba meg van....:(

Sikerült:
http://eupalyazat.info/apcu/apc.php

de a hiba meg van :(

A PHP-t futtató szolgáltatás újraindítása szükséges. Ez lehet az Apache-od, vagy ha FPM-el futtatod, akkor a PHP-FPM-et kell újraindítanod ahhoz, hogy ez eltűnjön. Néha beragadhat egy-egy PHP szál, érdemes ps huax |grep php-t futtató user-re vagy a php (a fordító bináris neve, ha eltér, akkor arra) névre szűrni, és ha újraindítás után is van régebb óta futó szál, akkor azt el kell lőni.