Verschiedene PHP Installationen und Configs - Fehlende PHP Extensions

phill54

Benutzer
Mitglied seit
16. Februar 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hi,

ich versuch ja grundsätzlich die Übersicht zu behalten.
Ich habe auf meiner DS215j sowohl php56 als auch php70 installiert. Dann habe ich herausgefunden, dass man diverse php-extensions und configs nur über die Installation von "Web Station" auswählen kann - auch wenn man "Web-Station" gar nicht verwenden wollte (...). Dort habe ich in der Oberfläche diverse extensions für php56 angeklickt, die ich teilweise unmittelbar, teilweise nur vielleicht benötige. Dann wollte ich das gleiche für php70 tun und stelle fest, dass dort meine auswahl von php56 übernommen wurde.

Mittlerweile bin ich soweit, dass ich folgendes verstanden habe:
1. Ich habe 3 verschiedene php binaries auf meinem synology
Rich (BBCode):
myuser@synology:~$ which php
/bin/php
myuser@synology:~$ which php56
/usr/local/bin/php56
myuser@synology:~$ which php70
/usr/local/bin/php70
2. Meine 3 php installationen verwenden 3 unterschiedliche configs
Rich (BBCode):
myuser@synology:~$ php --ini
Configuration File (php.ini) Path: /etc/php
Loaded Configuration File:         /etc/php/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

myuser@synology:~$ php56 --ini
Configuration File (php.ini) Path: /usr/local/etc/php56
Loaded Configuration File:         /usr/local/etc/php56/php.ini
Scan for additional .ini files in: /usr/local/etc/php56/conf.d
Additional .ini files parsed:      /usr/local/etc/php56/conf.d/apcu.ini,
/usr/local/etc/php56/conf.d/extensions.ini,
/usr/local/etc/php56/conf.d/opcache.ini

myuser@synology:~$ php70 --ini
Configuration File (php.ini) Path: /usr/local/etc/php70
Loaded Configuration File:         /usr/local/etc/php70/php.ini
Scan for additional .ini files in: /usr/local/etc/php70/conf.d
Additional .ini files parsed:      (none)

Ich hab jetzt noch nicht überprüft ob und welche Änderungen aus der GUI sich auf welche und wieviele Configs auswirken, aber ich habe das Gefühl, da läuft was schief.

Ich wollte also mal wissen wo überhaupt die extensions für php abgelegt sind:
Rich (BBCode):
myuser@synology:~$ php -i | grep "modules"
extension_dir => /usr/lib/php/modules => /usr/lib/php/modules

myuser@synology:~$ php56 -i | grep "modules"
extension_dir => /usr/local/lib/php56/modules => /usr/local/lib/php56/modules

myuser@synology:~$ php70 -i | grep "modules"
extension_dir => /usr/local/lib/php70/modules => /usr/local/lib/php70/modules

Und dann hab ich den Inhalt der Ordner überprüft:
Rich (BBCode):
myuser@synology:~$ ls -alh /usr/lib/php/modules
total 896K
drwxr-xr-x 2 root root 4.0K Feb  3 04:53 .
drwxr-xr-x 5 root root 4.0K Feb  3 04:53 ..
-rwxr-xr-x 1 root root  25K Jan 26 01:15 bcmath.so
-rwxr-xr-x 1 root root  17K Jan 26 01:15 bz2.so
-rwxr-xr-x 1 root root  73K Jan 26 01:15 curl.so
-rwxr-xr-x 1 root root  33K Jan 26 01:15 iconv.so
-rwxr-xr-x 1 root root  49K Jan 26 01:15 ldap.so
-rwxr-xr-x 1 root root  38K Jan 26 01:15 mcrypt.so
-rwxr-xr-x 1 root root 117K Jan 26 01:15 openssl.so
-rwxr-xr-x 1 root root  20K Jan 26 01:15 pdo_sqlite.so
-rwxr-xr-x 1 root root 236K Jan 26 01:15 phar.so
-rwxr-xr-x 1 root root  21K Jan 26 01:15 posix.so
-rwxr-xr-x 1 root root 8.3K Jan 26 01:15 shmop.so
-rwxr-xr-x 1 root root  70K Jan 26 01:15 sockets.so
-rwxr-xr-x 1 root root  37K Jan 26 01:15 sqlite3.so
-rwxr-xr-x 1 root root  14K Jan 26 01:16 syno_compiler.so
-rwxr-xr-x 1 root root  95K Jan 26 01:15 zip.so

myuser@synology:~$ ls -alh /usr/local/lib/php56/modules/
total 8.0K
drwxr-xr-x 2 root root 4.0K Mar 23  2017 .
drwxr-xr-x 3 root root 4.0K Mar 23  2017 ..

myuser@synology:~$ ls -alh /usr/local/lib/php70/modules/
total 8.0K
drwxr-xr-x 2 root root 4.0K Jan 17 13:33 .
drwxr-xr-x 3 root root 4.0K Jan 17 13:33 ..

Jetzt ist mir klar, warum in meiner php56 Installation nix läuft wie erwartet.
Ich stelle mir jetzt nur die Frage wie ich das Problem lösen kann? Eine De- und Neuinstallation von php56/php70 über die DSM (6.1) Oberfläche belässt alles unverändert. Sind die php-extensions aus /usr/lib/php/modules kompatibel mit php56 und/order php70 ? kann ich die einfach rüberkopieren? Überschreibt mir eine Änderung in der DSM Oberfläche meine angepassten php56 ini-config?

Hintergrund warum ich mich damit beschäftige: ich habe eine composer.phar geladen und wollte von einem Laravel-Projekt die Dependencies updaten.

Die php56 && php70 binaries funktionieren nicht mit meiner composer.phar mangels phar-extension/module
Rich (BBCode):
myuser@synology:~/code/laravelproject$ php56 composer.phar update
PHP Fatal error:  Class 'Phar' not found in /volume2/homes/myuser/code/laravelproject/composer.phar on line 23

Fatal error: Class 'Phar' not found in /volume2/homes/myuser/code/laravelproject/composer.phar on line 23
myuser@synology:~/code/laravelproject$ php70 composer.phar update
PHP Fatal error:  Uncaught Error: Class 'Phar' not found in /volume2/homes/myuser/code/laravelproject/composer.phar:23
Stack trace:
#0 {main}
  thrown in /volume2/homes/myuser/code/laravelproject/composer.phar on line 23

Fatal error: Uncaught Error: Class 'Phar' not found in /volume2/homes/myuser/code/laravelproject/composer.phar:23
Stack trace:
#0 {main}
  thrown in /volume2/homes/myuser/code/laravelproject/composer.phar on line 23

Und die php-binary failed am ende mit folgendem Fehler:
Rich (BBCode):
myuser@synology:~/code/laravelproject$ php composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
[...]
    - psy/psysh v0.8.17 requires nikic/php-parser ~1.3|~2.0|~3.0 -> satisfiable by nikic/php-parser[v1.3.0, v1.4.0, v1.4.1, v2.0.0, v2.0.1, v2.1.0, v2.1.1, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.1.0, v3.1.1, v3.1.2, v3.1.3, v3.1.4].
    - psy/psysh v0.8.2 requires nikic/php-parser ~1.3|~2.0|~3.0 -> satisfiabl
    - psy/psysh v0.7.2 requires nikic/php-parser ^1.2.1|~2.0 -> satisfiable by nikic/php-parser[v1.2.1, v1.2.2, v1.3.0, v1.4.0, v1.4.1, v2.0.0, v2.0.1, v2.1.0, v2.1.1].
    - nikic/php-parser v3.1.4 requires ext-tokenizer * -> the requested PHP extension tokenizer is missing from your system.
[...]
    - nikic/php-parser v1.2.1 requires ext-tokenizer * -> the requested PHP extension tokenizer is missing from your system.
    - Installation request for laravel/tinker ~1.0 -> satisfiable by laravel/tinker[v1.0.0, v1.0.1, v1.0.2, v1.0.3].

  To enable extensions, verify that they are enabled in your .ini files:
    - /etc/php/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

Allerdings ist der Tokenizer default-mässig seit php 4.3 inkludiert (http://php.net/manual/de/tokenizer.installation.php). Demnach wurde er für die php-binary auf synology beim compilieren explizit weggelassen.... hmpf.

Also ich würde mich freuen, wenn jemand einen hilfreichen Tipp hätte :)
 

Arni

Benutzer
Mitglied seit
05. Oktober 2012
Beiträge
402
Punkte für Reaktionen
1
Punkte
24
Mal ein Schuß ins Blaue: Hast du in der Webstation für die jeweilige PHP Version auch die Module aktiviert?
 

phill54

Benutzer
Mitglied seit
16. Februar 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Ja, sorry, ich dachte das ginge aus meinem Text hervor.

synology-webstation-allgemeine-einstellungen.png
synology-webstation-php56-erweitere-einstellungen.png

Sonderbarerweise wurden die gleichen Erweiterungen, die ich für php56 ausgewählt hatte auch ohne mein zutun automatisch für php70 ausgewählt.
 

phill54

Benutzer
Mitglied seit
16. Februar 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Also Zwischenstand: ich hab jetzt den extension_dir pfad von php56/php.ini auf den von php/php.ini umgelegt und aktiv die phar.so eingetragen. jetzt geht zumindest mein "php56 composer.phar update"-command. Schmutzig finde ich das allerdings schon. Hat da sonst jemand Erfahrung? Mit php70 hab ichs nicht probiert, ich gehe aber auch davon aus, dass die binary für php56 nicht mit php70 kompatibel ist...
 

Frogman

Benutzer
Mitglied seit
01. September 2012
Beiträge
17.485
Punkte für Reaktionen
1
Punkte
414
Für diejenigen, die hier auch mal in der beschriebenen Situation sind - mir sind gerade, nachdem ich vom bewährten DSM5.2 auf die 6.1 hochgezogen bin, die gleichen Probleme begegnet (insbesondere zur Aktivierung des Redis-Moduls).
Es hilft, für die jeweiligen PHP-Installationen eine Datei /usr/local/etc/php56/conf.d/user-settings.ini bzw. /usr/local/etc/php70/conf.d/user-settings.ini anzulegen und dort die relevanten Module bzw. auch spezifische open_basedir hineinzuschreiben:

PHP56
Code:
open_basedir = Null

extension = apcu.so
extension = bcmath.so
extension = bz2.so
extension = calendar.so
extension = curl.so
extension = dba.so
extension = exif.so
extension = ftp.so
extension = gd.so
extension = gettext.so
extension = gmp.so
extension = iconv.so
extension = imap.so
extension = intl.so
extension = ldap.so
extension = mcrypt.so
extension = mssql.so
extension = mysql.so
extension = mysqli.so
extension = openssl.so
extension = pdo_dblib.so
extension = pdo_mysql.so
extension = pdo_pgsql.so
extension = pdo_sqlite.so
extension = pgsql.so
extension = phar.so
extension = posix.so
extension = redis.so
extension = shmop.so
extension = soap.so
extension = sockets.so
extension = sqlite3.so
extension = sysvmsg.so
extension = sysvsem.so
extension = sysvshm.so
extension = wddx.so
extension = xmlrpc.so
extension = xsl.so
extension = zip.so

PHP70
Code:
open_basedir = Null

zend_extension = opcache.so
zend_extension = xdebug.so

extension = apcu.so
extension = bcmath.so
extension = bz2.so
extension = calendar.so
extension = curl.so
extension = dba.so
extension = exif.so
extension = ftp.so
extension = gd.so
extension = gettext.so
extension = gmp.so
extension = iconv.so
extension = imap.so
extension = intl.so
extension = ldap.so
extension = mailparse.so
extension = mcrypt.so
extension = memcached.so
extension = mysqli.so
extension = openssl.so
extension = pdo_dblib.so
extension = pdo_mysql.so
extension = pdo_pgsql.so
extension = pdo_sqlite.so
extension = pgsql.so
extension = phar.so
extension = posix.so
extension = redis.so
extension = shmop.so
extension = soap.so
extension = sockets.so
extension = sqlite3.so
extension = ssh2.so
extension = sysvmsg.so
extension = sysvsem.so
extension = sysvshm.so
extension = wddx.so
extension = xmlrpc.so
extension = xsl.so
extension = zip.so
 
Zuletzt bearbeitet:

sector

Benutzer
Mitglied seit
19. November 2013
Beiträge
115
Punkte für Reaktionen
0
Punkte
16
Hi,

ich habe das Problem mit den Libraries mcrypt.so & mysql.so. Die Libraries benötige ich für Nextcloud

Geht dieses Vorhaben immernoch? Habe aktuell installiert: DSM 6.2.3-25426 Update 2
 

Fusion

Benutzer
Mitglied seit
06. April 2013
Beiträge
11.366
Punkte für Reaktionen
160
Punkte
319
Was für ein Problem hast du denn?
Bekommst die Module im PHP Profil nicht aktiviert?
 

sector

Benutzer
Mitglied seit
19. November 2013
Beiträge
115
Punkte für Reaktionen
0
Punkte
16
Je nachdem, in der DSM oberfläche, tauchen die Module gar nicht auf.

Ich möchte bei #Nextcloud ne app installieren über php72 occ dann kommt der Fehler:

But now, even if in the /etc/php/php.ini file 512MB is configured, I recieve the following error:
php72 occ help
PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/local/lib/php72/modules/mcrypt.so (/usr/local/lib/php72/modules/mcrypt.so: cannot open shared object file: No such file or directory), /usr/local/lib/php72/modules/mcrypt.so.so (/usr/local/lib/php72/modules/mcrypt.so.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 'mysql.so' (tried: /usr/local/lib/php72/modules/mysql.so (/usr/local/lib/php72/modules/mysql.so: cannot open shared object file: No such file or directory), /usr/local/lib/php72/modules/mysql.so.so (/usr/local/lib/php72/modules/mysql.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
 

Fusion

Benutzer
Mitglied seit
06. April 2013
Beiträge
11.366
Punkte für Reaktionen
160
Punkte
319
Php72?
Welche App? Ist diese nicht über die nextcloud Gui verfügbar?
Wie/wo und welche Version von nextcloud?
Wie lauten die kompletten Befehle die du absetzt?
Empfiehlt sich teils absolute php Pfade und die passenden ini/confs mit in die Befehle zu packen damit der Kontext stimmt.
MySQL ist normal pdo_mysql und verfügbar.
Mcrypt ist in der normalen Auswahl nicht vorhanden. Müsste ich aber selbst erst schauen, in welcher Version es vielleicht wenigstens noch per config aktivierbar ist
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.