2010-05-22 18 views
6

Ich habe gehört, dass das Setzen der Option --prefix=PREFIX beim Kompilieren von PHP auf Linux ermöglicht es Ihnen, mehr als eine Installation von PHP auf einmal zu haben, ohne dass sie kollidieren. (Ich denke, der Standard, wenn dies nicht festgelegt ist, ist /usr/local). Ich bin mir jedoch nicht sicher, was genau es tut oder was eine gute Einstellung zu verwenden ist. Außerdem habe ich gehört, dass es etwas schwieriger ist, einige PHP-Erweiterungen zu installieren, wenn man sie auf etwas anderes als den Standardwert einstellt.Was macht die PHP-Konfigurationsoption "--prefix = PREFIX"?

./configure --prefix=PREFIX ... 

Ich habe erkannt, dass einige der anderen Optionen wie --exec-prefix noch /usr/local eingestellt werden müssen, da diese mit --prefix auf den Wert der Standard. Dies würde Probleme verursachen, wenn Präfix auf etwas wie web/phpalt gesetzt wäre, weil Dinge wie --sbindir auf "--exec-prefix +/sbin" gesetzt ist.

Basierend auf was PHP sagt, dann scheint es, als ob Sie die folgenden Optionen ohne irgendwelche Nebeneffekte einstellen könnten.

./configure --prefix=/custom/path --exec-prefix=/usr/local 

Dies ist jedoch nur eine Vermutung.

+0

RE: Ihr Update - tun Sie das nicht. Wenn Sie Dinge wie --exec-prefix usw. setzen, werden Dinge aus Ihrer kleinen Sandbox herauslaufen. Benutze einfach --prefix. – timdev

+0

Was ist, wenn ich einfach PHP für die Entwicklung einer Erweiterung einrichten möchte, ohne ein sudoer zu sein? Brauche ich das --exec-Präfix oder nicht –

Antwort

4

Wenn Sie zwischen 5.2 und 5.3 wechseln möchten, ist es wahrscheinlich besser, Apache und PHP aus der Quelle in spezielle Verzeichnisse zu kompilieren.

Grundsätzlich können Sie Apache und php5.2 an einen Ort wie/web/php52 kompilieren (geben Sie --prefix =/web/php52 bis configure für Apache und PHP. Dann machen Sie das gleiche für Apache/php53 mit a Präfix wie/web/php53

man könnte sogar knifflig und Dinge tun, wie Symlink verschiedene Konfigurationen zwischen den beiden apache Installationen Dinge konsistent zu halten (so die nur Unterschied besteht darin, dass man 5,3 und die andere 5.2 läuft)

Wenn Sie Ihren 5.2-Server starten möchten, sagen Sie einfach:

$ /web/php52/bin/apachectl start 

und dann auf 5 umschalten.

$ /web/php52/bin/apachectl stop 
$ /web/php53/bin/apachectl start 

Ich habe einige (alt) build scripts zur Verfügung, die möglicherweise oder möglicherweise Sie einige Schmerzen nicht sparen, wenn Sie auf Linux (CentOS insbesondere kompilierens, aber man konnte es ziemlich leicht auf nicht-redhat distros funktioniert auch)

+0

Super, damit ich verschiedene PHP-Versionen in einzelne Ordner kompilieren konnte. Das möchte ich tun. Gibt es Teile des PHP-Kerns, die möglicherweise außerhalb des Ordners installiert werden, wenn ich 'prefix =/web/php52' einstelle? Mit anderen Worten, ich möchte den Ordner '/ web/php52' einfach entfernen können, wenn ich diese Version nicht mehr benötige, ohne mich um die verbleibenden Dateien in anderen Teilen des Dateisystems sorgen zu müssen. BTW, ich werde nginx nicht apache verwenden, also werde ich wahrscheinlich einfach den Speicherort des fastcgi PHP-Pfades ändern, wenn ich ihn starte. – Xeoncross

+1

PHP wird nichts außerhalb seines Präfix-Verzeichnisses einfügen, es sei denn, Sie sagen es ausdrücklich, indem Sie andere Argumente zum 'configure' verwenden. Nuking, egal welches Verzeichnis du aufrufst, wird alles komplett aufräumen. – timdev

0

Das ändert nur den Ordner, in dem die PHP-Binärdateien installiert werden.

Das Ändern wird sich ändern, wo Sie es installieren, also könnten Sie technisch mehrere Kopien installieren ... aber warum sollten Sie das tun? Das würde nur Kopfschmerzen für alles andere (Webserver/cgi/cli)

Die meiste Zeit, ist der Weg /usr/local oder /usr, die die Dateien in /usr/local/bin und/usr/bin` jeweils installieren würde.

+0

Ich muss in der Lage sein, zwischen PHP 5.2 und PHP 5.3 zum Testen hin und her zu wechseln. – Xeoncross

+0

@Xeoncross - Ich denke, aber Sie werden wahrscheinlich mehr Probleme verursachen, die Sie ironischerweise dazu zwingen, Zeit zu verbringen, herauszufinden, ob Ihr Code ein Problem hat, oder ob es mit Ihrem 5.2/5.3-Switching zu tun hat. Warum nicht einfach eine VM oder etwas mit zwei verschiedenen PHP-Installationen ausführen? –

+0

Ya, eine VM ist eine Option - aber ich hatte gehofft, dass es einfach ist, mehrere Installationen von PHP auf Linux zu haben, wie es in Windows ist. – Xeoncross

2

Die gute Einstellung für Sie zu verwenden ist /usr/local. Der Distropacker sollte /usr verwenden und ISVs sollten /opt/<appname> verwenden.

Dieser Pfad wird als Basis für die ausführbare CLI-Datei ($PREFIX/bin), die SAPI-Bibliothek und die Erweiterungen verwendet.

Verwandte Themen