PHP 5.6 auf Ubuntu mit Plesk 12 kompilieren und installieren

Da Plesk selbst PHP nutzt, sollte man unbedingt die Standard-Version von PHP im Betriebssystem nicht ändern! Will oder braucht man aber eine jüngere Version von PHP (was vor allem bei Ubuntu 12.04 geraten ist, da dort nur PHP 5.3.10 vorhanden ist, d.h. ohne Zend OPcache), so kann man diese unter alternativen Pfaden bereitstellen und anschließend als alternativer FastCGI-Händler bei Plesk registrieren.

Dazu gibt es keine fertigen Pakete die man per apt-get bzw. aptitude installieren könnte, denn für eine nicht-standard Version von PHP gibt es einfach zu viele Variablen – allen voran die Pfadangaben und die Optionen zum Kompilieren von PHP. Deswegen muss man alles selber per SSH-Sitzung an der Linux-Kommandozeile machen (und zwar mit root-Rechten).

Das macht alles Arbeit, die sich jedoch lohnt: PHP 5.6 soll ein Tick schneller sein als 5.5, und Pakete wie ownCloud 8, die PHP ab Vn. 5.4 / 5.5 verlangen, können unter Ubuntu 12.04 (PHP 5.3.10) doch laufen, dann sogar auch mit dem PHP Bytecode-Cache "Zend OPcache".

In einem Forumsbeitrag des Plesk-Herstellers wurde das Anbieten alternativer PHP-Versionen für die aktuelle Plesk-Version angekündigt: "We plan to add several php versions packaged by Parallels that will be available as separate components in Plesk 12.0.18 Installer". Es handelt sich um Versionen 5.2 bis 5.6. Ich habe das 5.6.7 installiert, und festgestellt: Es hat sehr viele Shared-Module dabei (/opt/plesk/php/5.6/lib/php/modules), die per Default alle geladen werden. Dies kann man nur durch Eingriffe unter /opt/plesk/php/5.6/etc/php.d ändern. Dabei ist Redis, das für ownCloud 8.0 abgeschaltet werden muss. PEAR und PECL werden nicht vollständig mit ausgeliefert (phpize fehlt), so dass man weitere Erweiterungen, z.B. APCu oder igbinary, nicht per PECL laden kann (Ausweg: Die .so Dateien aus einer eigenen PHP-Installation übernehmen). Immerhin: Plesk hält die PHP-Version aktuell - jetzt habe ich 5.6.8.

Abhängigkeiten installieren

Man muss vor dem Kompilieren alle Pakete installieren, von denen das Kompilieren selbst abhängt. Die "billige Tour" dazu lautet: "apt-get install build-essential ; apt-get build-dep php5" wie hier vorgeschlagen, doch zweiteres holt sehr viel was je nach Konfiguration von PHP nicht benötigt wird. Hier die Einzelpakete passend zur weiter unten stehenden PHP-Konfiguration:

Ubuntu 12.04

apt-get install build-essential libxml2-dev libpcre3-dev libgmp-dev libmcrypt-dev libbz2-dev libcurl4-openssl-dev libdb4.8-dev libjpeg-dev libpng12-dev libxpm-dev libfreetype6-dev libmysqlclient-dev libt1-dev libgd2-xpm-dev libc-client-dev libsasl2-dev unixodbc-dev libicu-dev freetds-dev libsnmp-dev libtidy-dev libxslt1-dev libreadline-dev ldap-utils

Ubuntu 14.04

apt-get install build-essential libxml2-dev libpcre3-dev libbz2-dev libcurl4-openssl-dev libdb5.3-dev libjpeg-dev libpng12-dev libxpm-dev libfreetype6-dev libmysqlclient-dev libt1-dev libgd2-xpm-dev libc-client-dev libsasl2-dev unixodbc-dev libicu-dev freetds-dev libsnmp-dev libtidy-dev libxslt1-dev libreadline-dev

Die jüngste Version von PHP holen

Browse: http://php.net/downloads.php und klicke dort auf den Link php-5.6.?.tar.gz

Auf der folgenden Seite ein Mirror auswählen und den Link kopieren.

cd /usr/local/src
wget http://de2.php.net/get/php-5.6.8.tar.gz/from/this/mirror
mv mirror php-5.6.8.tar.gz
gunzip php-5.6.8.tar.gz
tar --no-same-owner -xf php-5.6.8.tar
cd php-5.6.8

Optionen zu PHP "configure" Befehl

Puh sind das viele! Ich habe mich informiert: hier, hier und hier. Unter dem ersten Link wird behauptet: "The last switch (--enable-cgi) makes sure this PHP version will work with FastCGI." Aber (jetzt) bietet 5.6.6 nur die Option "--disable-cgi" – so scheint es dass --enable-cgi Standardverhalten ist. Eine weitere gute Orientierung sind die Optionen die benutzt wurden, um die Standard-Version von PHP auf Ubuntu zu kompilieren:

apt-get install php5-dev
php-config --configure-options

Nach diesen Lektüren und eigenen Gehversuchen habe ich folgende Optionen verwendet. Die SAPI für PHP-FPM habe ich nicht erzeugen lassen, da Plesk ohnehin nur die Möglichkeit bietet, die Alternativ-Version von PHP über das FastCGI-SAPI einzubinden. Configure benötigt die zwei unten aufgeführten Symlinks, die man händisch setzen muss. Die CFLAGS bewirken einen schnelleren Code und ein schnelleres Kompilieren.

cd /usr/local/src/php-5.6.8
ln -s /usr/lib/x86_64-linux-gnu/libpcre.a /usr/lib/libpcre.a
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/

# Auf Ubuntu 14.04 (Strato) auch nötig:
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h
apt-get install libmcrypt-dev

export CFLAGS="-march=native -pipe"
./configure --prefix=/usr/local/php568 --with-pic --disable-debug --disable-rpath --without-mm --without-gdbm --without-t1lib --without-sqlite3 --without-pdo-sqlite --without-readline --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-gd-native-ttf --with-iconv --with-libxml-dir=/usr --enable-mbstring --enable-xmlreader=/usr --enable-xmlwriter=/usr --enable-zip --with-zlib --with-zlib-dir=/usr --with-mysql --with-mysqli --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-pdo-mysql --with-curl=/usr --enable-fileinfo=/usr --with-bz2=/usr --enable-intl=/usr --with-icu-dir=/usr --with-mcrypt=/usr --enable-exif --enable-sysvsem --enable-sysvshm --enable-sysvmsg --with-openssl --enable-opcache --enable-sockets --enable-calendar --enable-ftp --enable-pcntl --with-pcre-regex=/usr --with-gettext --with-gmp=shared --enable-bcmath=shared --enable-soap=shared --with-ldap=shared --with-tidy=shared --with-xmlrpc=shared --with-xsl=shared --with-imap=shared --with-kerberos --with-imap-ssl --with-unixODBC=shared,/usr --with-pdo-odbc=shared,unixODBC,/usr

Tipps zum Configure-Befehl

  • Obige configure-Parameter sind auf ownCloud 8 abgestimmt.
  • Ich habe z.B. per "--without-sqlite3" von mir nicht-benötigten Platz in der binären SAPI-Datei von PHP gespart. Prüfen Sie welche Features Sie brauchen und passen Sie meine "with/without/enable" Optionen Ihren eigenen Bedürfnissen an.
  • Unterscheiden Sie dabei zwischen Features, die (fast) immer gebraucht werden, und solche die nur von manchen Websites benötigt werden. Die häufig gebrauchten lassen Sie statisch (fest) einbinden. Die Binärdatei der SAPI wird damit zwar größer, doch wenn bestimmte Module (fast) immer dazu konfiguriert werden, dann sind sie sowieso im Hauptspeicher und man vergeudet Zeit für das dynamische Linken.
  • Eine "CFLAGS" Umgebungsvariable wird von "configure" nicht als das ganze CFLAGS-Argument zu cc behandelt, sondern als zusätzliche Optionen, die im Makefile unter CFLAGS_CLEAN auftauchen.

make und Makefile

Unter Linux werden komplexere Folgen von Anweisungen zum Kompilieren und Binden von Binärdateien meist mit der "make" Utility gehandhabt. Diese nimmt seine Anweisungen aus einer Datei, die standardmäßig "Makefile" lautet. Mit der "configure" Anweisung oben wurde eine Makefile erzeugt spezifisch zu den angegebenen Optionen. Nun können Sie PHP zu ausführbaren SAPI-Dateien kompilieren und binden lassen. Unter Ubuntu 12.04 fehlt eine Bibliothek in den Parametern für den Linker, das muss händisch korrigiert werden:

export LIBS="-llber"
make
make test

"make" und "make test" laufen je ca. 5 bis 10 Minuten! "make test" liefert einige Fehler, hier für einen STRATO vServer mit Ubuntu 14.04 und PHP 5.6.7:

=====================================================================
FAILED TEST SUMMARY
---------------------------------------------------------------------
Test HTTP_RAW_POST_DATA creation [tests/basic/024.phpt]
Registration of HTTP_RAW_POST_DATA due to unknown content-type [tests/basic/026.phpt]
Bug #67109 (First uppercase letter breaks date string parsing) [ext/date/tests/bug67109.phpt]
FTP with bogus parameters [ext/ftp/tests/004.phpt]
Bug #37911 (preg_replace_callback ignores named groups) [ext/pcre/tests/bug37911.phpt]
preg_grep() 2nd test [ext/pcre/tests/grep2.phpt]
preg_match() flags 3 [ext/pcre/tests/match_flags3.phpt]
chmod() basic functionality [ext/standard/tests/file/chmod_basic.phpt]
Test disk_free_space and its alias diskfreespace() functions:
  basic functionality [ext/standard/tests/file/disk_free_space_basic.phpt]
=====================================================================

RUHIG BLUT: Nicht alle "Fehler" sind echte Fehler – was teilweise daran liegt, dass die Tests hinter den Änderungen in PHP selbst hinken. Und manche "Fehler" liegen an Besonderheiten des Servers:

  • Falls Sie Fehler wegen "gettext" und Locale "en_US" an einem Strato vServer erhalten, dann weil Strato in der /ect/profile eine Anweisung "export LC_ALL="de_DE.utf8" hinzugefügt hat; diese Löschen und erneut einloggen.
  • Bzgl. HTTP_RAW_POST_DATA steht in der php.ini dazu
    Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is to disable this feature and it will be removed in a future version. Offensichtlich wurde es jetzt schon entfernt.
  • chmod(): Ich habe den Test manuell laufen lassen:
    Die Ausgabe des Testfalls zeigt, dass chmod() funktioniert, nur das Bit 01000 wird nicht akzeptiert. "the 1000 specifies set sticky bit, which suggests that the script be retained in memory." Aber: "This usage of the sticky bit only applies to directories, not files. In the distant past, its meaning on executable files was to save the program's text segment to swap rather than discarding it so that running it again would be faster, but these days it has no meaning on regular files."
    FAZIT: Der Test ist veraltet, geht noch auf Ubuntu 12.04, auf 14.04 nicht mehr.
  • disk_free_space(): Der Test legt ein Verzeichnis und dann eine Datei an, und vergleicht die vorher/nachher Werte von disk_free_space(). Diese ändern sich auf einem Strato vServer nicht, was aller Vermutung nach an der speziellen Art des Storage liegt: HP 3PAR StoreServ Speicherplattform (SSD/HDD).

Damit wären alle "Fails" bis auf "FTP with bogus parameters" sowie den 3 Fehlern, die auch auf einem anderen Server vorkommen, erklärt. Daher: Ich nutzte die Version!

PHP installieren und php.ini anpassen

make install
cp php.ini-production /usr/local/php568/lib/php.ini
cd /usr/local/php568/lib

Jetzt können Sie die php.ini Ihren Bedürfnissen anpassen. Hier die Werte, die ich angepasst habe:

short_open_tag = On
always_populate_raw_post_data = -1
realpath_cache_size = 32k
expose_php = Off
max_execution_time = 60
memory_limit = 512M
error_reporting = E_ALL & ~E_DEPRECATED
html_errors = Off
post_max_size = 513M
include_path = ".:/usr/local/php568/lib/php"
extension_dir = "/usr/local/php568/lib/php/extensions/no-debug-non-zts-20131226"
upload_max_filesize = 513M
date.timezone = Europe/Berlin
mysqlnd.collect_statistics = Off
; Std-Ort für Session-Dateien, die gecleaned wird, s. /etc/cron.d/php5
session.save_path = "/var/lib/php5"
session.gc_probability = 0

[zend]
zend_extension = /usr/local/php568/lib/php/extensions/no-debug-non-zts-20131226/opcache.so

opcache.enable=1
opcache.memory_consumption=16
opcache.interned_strings_buffer=1
opcache.max_accelerated_files=1000
opcache.revalidate_freq=10
opcache.save_comments=1
opcache.load_comments=1
opcache.fast_shutdown=1

Für ownCloud ist "opcache.save_comments = 1" zwingend!

ACHTUNG: Bei der Umstellung einer Domain auf PHP 5.6.? bastelt Plesk eine eigene php.ini Datei zusammen, wohl aus der Standard-Ini-Datei (die man beim Registrieren des Händlers angibt) plus die individuellen Einstellungen der Domain unter:
Power User view | <Webspace wählen> | <Domain wählen/öffnen> | PHP Settings
und zwar in /var/www/vhosts/system/etc/php.ini

Die neue PHP-Version mit Plesk registrieren

/usr/local/psa/bin/php_handler --add \
 -displayname "5.6.8" \
 -path /usr/local/php568/bin/php-cgi \
 -phpini /usr/local/php568/lib/php.ini \
 -type fastcgi \
 -id "fastcgi-5.6.8"

Entfernen mit: /usr/local/psa/bin/php_handler --remove -id "fastcgi-5.6.7"

Jetzt können Sie in Plesk die neue Version auswählen:

Als Voreinstellung:
Service Plans | Unlimited | Hosting Parameters | PHP support
Run PHP as FastCGI Application
PHP version ...

Für eine bestimmte Domain:
Power User view | <Domain> | Hosting Settings | PHP support (Run PHP as FastCGI, PHP version 5.6.8)

Konfiguration von apache mod_fcgid

Plesk Apache nutzt mod_fcgid (nicht das ältere mod_fastcgi). Siehe hier bzgl. der Resourcenschonung.

Falls Sie Nginx einsetzen: Nginx reicht alles was er nicht selbst als statische Datei erkennt an Apache via Port 7081 / 7080. Apache wiederum hört auf jene Ports und reicht .php Anfragen an /var/www/cgi-bin/cgi_wrapper/cgi_wrapper weiter, der verm. von Parallels stammt und auf die weiter oben gesetzten Umgebungsvariablen PP_CUSTOM_PHP_INI + PP_CUSTOM_PHP_CGI_INDEX achtet um den registrierten "-path /usr/local/php568/bin/php-cgi" für "fastcgi-5.6.8" zu nutzen.

Die Basis-Parameter für mod_fcgid stehen in /etc/apache2/mods-available/fcgid.conf. Sie sind konservativ.

Sie werden anschließend durch Parameter von Plesk aus /var/www/vhosts/system/conf/httpd.conf ergänzt. Insbesondere wird FcgidIOTimeout (Communication timeout to FastCGI server) von 45 auf 60 erhöht, und FcgidMaxRequestLen von 67108864 auf 134217728 verdoppelt. Insgesamt immer noch mau, man muss da selber nachhelfen:

/etc/apache2/mods-available/fcgid.conf

Diese Datei habe ich direkt händisch editiert – ich glaube nicht dass Plesk sie überbuttert:

<IfModule mod_fcgid.c>
 FcgidMaxRequestLen 67108864

  <IfModule !mod_fastcgi.c>
    AddHandler fcgid-script fcg fcgi fpl
  </IfModule>

  FcgidIPCDir /var/lib/apache2/fcgid/sock
  FcgidProcessTableFile /var/lib/apache2/fcgid/shm

  FcgidIdleTimeout 120
  FcgidBusyTimeout 200
  FcgidProcessLifeTime 1800
  FcgidMaxProcesses 120
  FcgidMaxProcessesPerClass 24
  FcgidMinProcessesPerClass 1
  FcgidConnectTimeout 30
  FcgidIOTimeout 45
  FcgidInitialEnv RAILS_ENV production
  FcgidIdleScanInterval 100
  FcgidBusyScanInterval 40
  FcgidZombieScanInterval 4
  FcgidErrorScanInterval 4

</IfModule>

FastCGI pro Domain in Plesk anpassen

Power User view | <Domain> | Web Server Settings | Additional Apache directives
Setzen Sie folgende Direktive ggf. sowohl für HTTP als auch für HTTPS identisch ab!

Achtung: Die Anweisungen die hier stehen werden in Vhost-Kontext inkludiert, Anweisungen für Server-Ebene sind nicht zulässig und machen die Konfig ungültig. Deswegen muss man für den Server die Hauptdatei wie oben beschrieben anpassen.

Für eine etwas stärker benutzte Domain

<IfModule mod_fcgid.c>
  # PHP FastCGI processes exit after 500 requests by default
  FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 8000
  FcgidMaxRequestsPerProcess 7999
  FcgidMaxProcessesPerClass 60
  FcgidMinProcessesPerClass 6
  # Idle application processes which have existed for greater than this time will be terminated (3600)
  FcgidProcessLifeTime 43200
  # Application processes which have not handled a request for this period of time will be terminated (300)
  FcgidIdleTimeout 1200
  FcgidMaxRequestLen 1073741824      # This is for ownCloud
  FcgidBusyTimeout 400               # Default 300
</IfModule>

Für eine sehr wenig frequentierte Domain

<IfModule mod_fcgid.c>
  FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500
  FcgidMaxRequestsPerProcess 499
  FcgidMaxProcessesPerClass 4
  FcgidProcessLifeTime 900
  FcgidIdleTimeout 60
  FcgidBusyTimeout 10
</IfModule>

PHP shared Module domain-spezifisch in Plesk aktivieren

Die meisten meiner Websites brauchen die GD Bildbearbeitungserweiterung nicht, aber ownCloud doch. Ich habe PHP daher mit GD "static" übersetzt, d.h. GD ist in der PHP-Binärdatei dabei, damit ownCloud CRON-Aufrufe per CLI nicht scheitern. Sie können ownCloud weiter beschleunigen durch den Einsatz von APCu. Mit folgendem Befehl können Sie APCu als Shared Modul bereitstellen:

/usr/local/php568/bin/pecl install channel://pecl.php.net/APCu-4.0.7

Dann müssen Sie das neue Modul dem PHP für ownCloud hinzufügen. Hierzu in Plesk:

  • Power User view | <Domain> | PHP Settings | Additional directives
  • extension=apcu.so

Lohnt sich die Aktivierung von OPcache?

JA. Auch wenn manche behaupten, dass OPcache nur mäßig taugt unter FastCGI, weil mehrere unabhängige Prozesse jeweils einen eigenen Cache anlegen, nach meiner eigenen Messung hat der OPcache eine beachtliche Trefferrate.

Dies sieht man indem man auf der Domain eine Datei "info.php" ablegt mit Inhalt "<?php phpinfo(); ?>" und sie gelegentlich aufruft, dann 'runterscrollen bis zum Abschnitt über OPcache gegen Ende der Seite. Zum Beispiel (ownCloud-Server): Cache hits 67023 / Cache misses 415.

Nachtrag: Debugging

Die PHP-Erweiterung Xdebug ist per PECL verfügbar, sie ergänzt PHP-Meldungen um ein Stack-Trace (und kann einiges mehr, siehe Homepage von Xdebug).

/usr/local/php568/bin/pecl install xdebug
zend_extension=/usr/local/php568/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so

Kommentare (20) Schreibe einen Kommentar

    • Hallo Jakob,
      ich vermute sehr stark ja – jedenfalls was das Kompilieren und Installieren von PHP an sich betrifft. Ich habe diese Anleitung mit Ubuntu 12.04 (basiert auf Debian 7 Wheezy) sowie Ubuntu 14.04 (basiert auf Debian 8 Jessie) entwickelt. Plesk-Einzelheiten sind natürlich Plesk-spezifisch – aber falls Du auch Plesk benutzt dann dürfte das auch weitgehend identisch sein.
      Beste Grüße, Tim

      Antworten

  1. Dieses Tutorial ist mit Abstand das beste, was man zu diesem Thema finden kann. Know-How gepaart mit Tell-Why, und am Ende funktioniert es sogar. Vielen Dank dafür!

    Ich bin beim Copy & Paste deiner Befehle in eine Codingfalle geraten. Der Befehl /usr/local/psa/bin/php_handler –add erzeugte den Fehler ‚–add‘ is not a command. Von alleine wäre ich darauf nie gekommen, aber ein Wissender im Plesk Supportforum hatte den richtigen Riecher.

    http://forum.sp.parallels.com/threads/add-is-not-a-command-error-on-registering-new-php_handler.332551/

    Antworten

    • Bitte schön!
      Danke für den Hinweis mit „–“ (minus minus), ich hatte Probleme sie überhaupt dargestellt zu bekommen, weil diese Website mit WordPress realisiert ist, und mir zunächst nicht gelungen war, das „Texturizing“ an der Stelle auszuschalten: Beim Ausgeben setzt ein Filter minus minus in & ndash; um… Daher hatte ich sie durch Unicode-Entitäten ersetzt, das verursachte dein Problem. Inzwischen habe ich das Plugin „Raw HTML“ geladen und setze auf dieser Seite sämtlich WordPress-Texturizing außer Kraft – jetzt sollte es funktionieren.

      Antworten

  2. Für Ubuntu 14 gibt es seit heute mit dem #41 er Update den nativen Support für unterschiedliche PHP Versionen in PLESK 12.1

    Leider noch nicht Ubuntu 12, was aber zum Glück noch folgen soll. 🙂

    http://kb.odin.com/125146

    Antworten

  3. Hallo!
    Vielen Dank für Deine sehr gute Doku! Leider bin ich nur bis zum Punkt „make“ bzw. „make test“ gekommen. Wenn ich „make“ ausführe bekomme ich direkt eine Fehlermeldung „make: *** Keine Targets angegeben und keine >>make<<-Steuerdatei gefunden. Schluss".

    Da ich leider nicht so viel Linux-Erfahrung habe (ja ich bin gerade großartig am sammeln!), kann ich mit der Meldung nicht so viel anfangen.

    Ich vermute mal das er die Datei "makefile", die er ja bei der Abhandlung zuvor mit ".\configure" erstellt haben soll, nicht findet. In meinem aktuellen Verzeichnis "/usr/local/src/php-5.6.8" finde ich diverse Makefile-Dateien (z.B. "Makefile.frag", ".fragments", ".gcov", ".global" und ".objects") aber keine die nur mit dem Namen "makefile" lautet.

    Ich bin etwas ratlos und hoffe jetzt auf einen Hinweis, der mich weiter bringt.

    Vielen Dank und schöne Grüße!

    tetrapac

    Antworten

    • Hallo tetrapac,

      es ist schwierig Definitives zu sagen ohne selbst einen Blick auf das GUI zu werfen. Wenn der „./configure“ Befehl ohne Fehler durchgelaufen ist, dann müsste er eine Datei namens „Makefile“ (mit großem M) hinterlassen. Traditionell, also seit grauer Urzeit, erwartet „make“ eine „Makefile“. Wenn Du von Windows kommst dann bist Du es vlt. gewohnt, dass Dateien ohne Rücksicht auf Groß/Klein aufgelistet werden. Auf Unix stehen sie eher säuberlich voneinander getrennt sortiert (meistens, je nach Anzeigeprogramm).

      Hoffe Du kommst nun weiter!

      SG Tim

      Antworten

      • Hallo Tim!

        Wow! 🙂 Vielen Dank für Deine schnelle Antwort! :o)

        Nein ich komme nicht von einem Windows-Server, sondern so wie Du über einen V-Server bei Strato mit Ubuntu und Zugriff nur über die Shell…

        Ich habe das configure-Log durchgesehen und es wurde abgebrochen mit „checking for PCRE library location… configure: error: Could not find libpcre.(a|so) in /usr“.

        Wenn ich mit „find /lib -name „libpcre*“ suche, dann findet er diese hier „/lib/i386-linux-gnu/libpcre.so.3.12.1“ und hier „/lib/i386-linux-gnu/libpcre.so.3“ und nur das mit „.so“ nicht „.a“.

        Daher vermute ich mal das der „ln -s“-Befehl für meine Installation nicht ganz richtig ist. Habe nun verschiedene Verlinkungen versucht und „configure“ neu laufen lassen, aber ohne Erfolg (immer mit der selben Meldung oben). Ich kann aber nicht sagen, ob ich mit meiner Vermutung schon in die richtige Richtung gehe…

        Schöne Grüße!

        tetrapac

        Antworten

        • Hallo tetrapac,

          in deinem „find“ Befehl gehst Du auf „/lib“ los – an meinem Server befindet sich jedoch die „.a“ Datei unter /usr/lib – hast Du dich vlt. da vertippt? Wenn sich die „.a“ Datei nicht unter /usr/lib/x86_64-linux-gnu/libpcre.a befindet, dann musst Du verm. per apt-get noch ein -dev Paket dazu laden, wohl libpcre3-dev.

          SG Tim

          Antworten

          • Hallo Tim! Hallo Tetrapac!

            Super geschriebene Anleitung – vielen Dank!

            Leider bekomme ich bei make den gleichen Fehler wie Tetrapac. Die libpcre.a ist vorhanden. Was kann ich tun /was mach ich falsch?

            VG
            Kaffeetante

          • Auf diese Befehle kommt es wohl an:
            cd /usr/local/src/php-5.6.8
            ln -s /usr/lib/x86_64-linux-gnu/libpcre.a /usr/lib/libpcre.a

            Hast Du sie ausgeführt, ist der Symlink /usr/lib/libpcre.a vorhanden?

            Good luck!

  4. Hallo Tim!

    WOW – sogar Sonntags so schnell! DANKE!

    Ja, im richtigen verzeichnis bin ich. Und ja, Symlink ist vorhanden…
    (bei erneuter Eingabe von „ln -s /usr/lib/x86_64-linux-gnu/libpcre.a /usr/lib/libpcre.a“ wird abgebrochen mit der Meldung: „File exists“

    Hast Du noch einen Tip?

    Danke,
    Kaffeetante

    Antworten

    • Leider nicht mehr, ich habe zu wenig Daten was Du genau machst – Betriebssystem, Plesk, PHP-Version – ich komme nicht weiter ohne ausführlicheren Infos bzw. einen Blick auf den Server. Für Ersteres bin ich für Gratis-Beratung zu beschäftigt, Letzteres kann ich Dir gerne anbieten zu 50€ die Stunde, Minimum-Abrechung 0,5 Stunden.

      Antworten

  5. Hallo Tim, hallo Kaffeetante!

    Die Symlinks müssen bei STRATO V-Server mit Ubuntu anders gesetzt werden… Bei mir hat der „configure“-Befehl nach setzen der folgenden Symlinks funktioniert:
    ln -s /usr/lib/i386-linux-gnu/libpcre.so libpcre.so
    ln -s /usr/lib/i386-linux-gnu/libpcre.a libpcre.a
    ln -s /usr/lib/i386-linux-gnu/libldap.so libldap.so

    Ich habe es soweit geschafft, dass PHP 5.6.8 nun über Plesk aufrufbar ist und soweit auch läuft. Allerdings sagt mir nun OwnCloud nun, dass das PHP-Modul GD nicht installiert ist. Ich habe bereits alle Extensions in das entsprechende im PHP.ini gesetztes Verzeichnis kopiert und den Server mal neu gestartet. Aber das hat nichts gebracht. OwnCloud sagt auch „PHP-Module wurden installiert, werden aber als noch fehlend gelistet?“

    Jetzt bin schon wieder überfragt… ;o)

    Vielen Dank und schöne Grüße!!

    tetrapac

    Antworten

    • Hm komisch tetrapac,

      in meinen Configure-Options habe ich –with-gd und –enable-gd-native-ttf dabei. Und zwar nicht als „shared“ sondern das GD-Modul, weil eben oft benötigt, soll statisch im PHP-Binary eingebunden sein. Die Ini-Angabe z.B. von „extension=gd.so“ müsste sich daher erübrigen, und GD einfach in PHP ansprechbar sein. Was sagt < ?php phpinfo(); ?>

      Bzgl. den Links oben für Kaffeetante, es fehlt die Angabe in welcher Verzeichnis Du warts als Du die Befehle eingegeben hast, sprich, in welchem Verzeichnis die Symlinks gelandet sind…

      LG Tim

      Antworten

  6. Hallo Tim!

    Stimmt! 🙂 Ich war im Verzeichnis „/usr/lib/“.

    Wie Du es geschrieben hast, dachte ich auch, dass das GD-Modul automatisch eingebunden ist, jedoch musste ich alle Module in die PHP.INI einzelnd mit „extension = gd.so“ eintragen. Nach reboot des Servers funktioniert jetzt alles! 🙂

    Tim, vielen vielen Dank für Deine wirklich tolle Hilfe und für Deine sehr gute Anleitung!!!

    Schöne Grüße!

    tetrapac

    Antworten

  7. Hallo,

    tolle Arbeit! Habe gerade php 5.6.12 an den start genommen. Mit deiner Hilfe eine Kleinigkeit

    Gruss
    Alex

    Antworten

  8. Danke danke danke für diese geniale Ausarbeitung! Die Installation hat wie am Schnürchen geklappt.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Mensch - gib die Ziffern ein! *