PHP hat keine Hardwarebeschränkungen, die ich jemals erlebt habe, aber eine Sache, die Sie davon abhält, neuere Versionen von PHP auf älteren * nix-Systemen zu kompilieren, ist Software.
Moderne Versionen von PHP werden nicht auf älteren * nix-Systemen kompiliert, da sie nicht über die erforderlichen Tools zum Erstellen von PHP verfügen (ein moderner C-Compiler, semi-neuste Versionen von glibc, GNU make, Bison und vieles mehr) der PHP-Erweiterungen haben die Voraussetzungen für neuere Bibliotheksversionen, die mit den auf älteren Systemen installierten nicht kompatibel sind.
Das könnte sehr gut sein, warum sie das sagen. Ich habe versucht, PHP 5.4 auf RedHat 7.3 ohne viel Glück zu kompilieren, da all diese Systembibliotheken und Tools zum Kompilieren von Software zu alt sind. Mit der OpenSSL-Erweiterung haben alte Systeme oft nicht einmal die richtigen Header-Dateien mit Funktionsprototypen, die PHP während der Kompilierung erwartet.
Also ja, kompilieren PHP ist schwierig oder unmöglich auf einem älteren System (jemals versucht, neuere Versionen von libc auf alten Maschinen zu bauen? Es ist ein Albtraum!).
Zum Beispiel habe ich PHP 5.6.22 und begann auf Red Hat Linux zu kompilieren Release 7.3 (Valhalla) und nicht sehr weit war ...
Erster einfacher Fehler:
checking for zlib version >= 1.2.0.4... 1.1.4
configure: error: libz version greater or equal to 1.2.0.4 required
Das ist einfach genug, um selbst zu kompilieren, aber eine Reihe von anderen Bibliotheken für Erweiterungen, die ich wollte, sind nicht auf dem System installiert, und der Versuch, jedes zu kompilieren, könnte ein eigenes Kaninchenloch sein.
Also nahm ich diejenigen, die wir nicht beginnen hatte, konnte ./configure
ganz gut, aber nicht zu weit in make
...
php-5.6.22/ext/openssl/openssl.c: In function `php_openssl_get_stream_from_ssl_handle':
php-5.6.22/ext/openssl/openssl.c:581: warning: passing arg 1 of `SSL_get_ex_data' discards qualifiers from pointer target type
php-5.6.22/ext/openssl/openssl.c: In function `php_openssl_get_evp_cipher_from_algo':
php-5.6.22/ext/openssl/openssl.c:1092: warning: return makes pointer from integer without a cast
php-5.6.22/ext/openssl/openssl.c:1095: warning: return makes pointer from integer without a cast
php-5.6.22/ext/openssl/openssl.c:1098: warning: return makes pointer from integer without a cast
php-5.6.22/ext/openssl/openssl.c: In function `openssl_x509v3_subjectAltName':
php-5.6.22/ext/openssl/openssl.c:1874: `GENERAL_NAMES' undeclared (first use in this function)
...
php-5.6.22/ext/openssl/openssl.c: In function `zif_openssl_digest':
php-5.6.22/ext/openssl/openssl.c:5112: void value not ignored as it ought to be
make: *** [ext/openssl/openssl.lo] Error 1
Also mit OpenSSL war es Spiel vorbei (Es ist übrigens Version 0.9.6b, so alt!). Ich könnte wahrscheinlich neuere OpenSSL wie ich es vorher ohne Probleme kompilieren, aber dieses 7.3-System ist auch etwas Besonderes. Wir haben uns viel Mühe gegeben, neuere Versionen von nicht unterstützter Software (libs & Compiler) in dieses System zu bringen, um es am Leben zu erhalten, aber bei älteren hatte ich viel weniger Glück.
Es kann also Tage dauern, bis neuere PHP auf älteren Systemen laufen und dies erfordert viel Erfahrung und Wissen darüber, wie Sie Bibliotheken außerhalb Ihres Bibliotheksweges erstellen und installieren (damit sie andere Dinge nicht stören) System) und dann die neuen Sachen, um dynamisch zu diesen zu verlinken).
Ich bin mir ziemlich sicher, dass Sie diese Informationen mit Google finden können. – Rasclatt
Nur aus Neugier, wie "alt"? Wie welches Betriebssystem und welche Version sprechen wir hier, wenn Sie teilen können? – drew010