PHP: WO Pfad zu extension.ini setzbar?

testit

Well-Known Member
Hallo,

bei mir liegt die extensions.ini für PHP4 unter
/usr/local/etc/php

Ich habe mir PHP5 als CGI-Variante installiert und frage mich, wie bzw. wo ich einstellen kann, dass PHP5 auf eine andere extension.ini (bitte nicht verwechseln mit extension_dir) zugreift?

Ich finde bisher keine Möglichkeit, anzugeben, dass PHP5 eine andere extension.ini als die von PHP4 nutzen soll, da in dieser ganze andere Extensions benannt werden als für PHP4.

Nette Grüße
testit
 
Also die normale "php.ini" sucht PHP in dem Verzeichnis, dass beim ./configure mit "--with-config-file-path" festgelegt wurde. Weitere INI's, wie z.B. die "extensions.ini", werden aus dem Verzeichnis geladen, dass mit "--with-config-file-scan-dir" festgelegt wurde.
 
Hallo,

danke fuer die Hinweise.

Die Frage ist nur, ob ich evtl. durch Setzen von Umgebungsvariablen PHP4 und PHP5 "klar" machen kann, dass sie auf verschiedene extensions.ini-Dateien zurückgreifen sollen?

Nette Grüße
testit
 
Also die normale "php.ini" sucht PHP in dem Verzeichnis, dass beim ./configure mit "--with-config-file-path" festgelegt wurde. Weitere INI's, wie z.B. die "extensions.ini", werden aus dem Verzeichnis geladen, dass mit "--with-config-file-scan-dir" festgelegt wurde.

Hallo,

vielen Dank für Eure Infos!

Ich hätte noch eine Frage: Ich habe bei mir PHP 5.2.8 installiert, das ich auch von der Shell aus aufrufen kann. Also vermutlich das, was gemeinhin als CGI-PHP bezeichnet wird.

Mittels php -i kann ich u.a. folgendes sehen:

Code:
'./configure'  '--with-layout=GNU' '--with-config-file-scan-dir=/usr/local/etc/php' '--disable-all' '--enable-libxml
' '--with-libxml-dir=/usr/local' '--with-pcre-regex=yes' '--enable-reflection' '--program-prefix=' '--enable-force-cgi-redirect' '--enable
-fastcgi' '--with-apxs=/usr/local/sbin/apxs' '--with-regex=php' '--with-zend-vm=CALL' '--enable-zend-multibyte' '--prefix=/usr/local' '--m
andir=/usr/local/man' '--infodir=/usr/local/info/' '--build=i386-portbld-freebsd5.4'

Es wird, wie sich mir oben zeigt, wenn ich PHP von der Shell aus aus aufrufe, ein anderes php.ini genutzt als von dem Apache-Modul, was auch so gewünscht ist.

Ich will nun --with-config-file-scan-dir für die "Kommandozeilenversion" anpassen, damit CGI-PHP nicht auf die gleiche Extensions.ini zugreift wie die Modulversion..

Wenn ich mich recht erinnere, wurde ich bei der Installation von PHP 5.2.8 gefragt, ob ich auch CGI-PHP mitinstallieren will. Mir ist momentan nicht klar, wie ich genau vorgehen muss, um ausschließlich --with-config-file-scan-dir für die CGI-PHP-Version zu ändern, ohne dass dies auch für das Apache-Modul von PHP abgeändert wird.

Wenn ich in das Port-Verzeichnis von PHP 5.2.8 gehe und dort ein neues ./configure ausführe, wird doch vermutlich ALLES neu kompiliert und das Ganze auch Auswirkungen haben auf die MODUL-Version.

Kann mir hierzu bitte jemand Tipps geben?

Danke im voraus!

testit
 
Ich hätte noch eine Frage: Ich habe bei mir PHP 5.2.8 installiert, das ich auch von der Shell aus aufrufen kann. Also vermutlich das, was gemeinhin als CGI-PHP bezeichnet wird.
Nein. Für die Shell wird das CLI benutzt. Der Webserver benutzt das CGI. (Auch wenn man das CGI auch in der Shell benutzen könnte)

Mittels php -i kann ich u.a. folgendes sehen:
In deinem Fall, du hast bereits ein PHP4 für das System/Server, sind eigentlich 3 Sachen wichtig:
- das ./configure darf kein "--with-apxs" enthalten (Das Modul für den Apache. Zumindest darft du dieses nicht aktivieren, wenn du es mitbauen lässt. Es läuft ja bereits das Modul von deinem PHP4)

- ein "--with-config-file-scan-dir" mit passendem Pfad muss drin sein (evtl. auch eine eigene php.ini mit - "-with-config-file-path" für dieses PHP festlegen)

- und mit "--program-suffix" gibst du diesen Binarys einen anderen Namen. ein z.B. "php-cgi" oder "php" gibt es ja wohl schon. Das könnte dann damit "php-cgi5" bzw. "php5" sein. (wird dann auch passend für "phpize" übernommen. also z.B: "phpize5")

Wo man jetzt diese Configure-Options für das BSD Portsystem festlegt, damit sie beim Bauen berücksichtigt werden, kann dir hoffentlich jemand anderes sagen...
 
Nein. Für die Shell wird das CLI benutzt. Der Webserver benutzt das CGI. (Auch wenn man das CGI auch in der Shell benutzen könnte)


In deinem Fall, du hast bereits ein PHP4 für das System/Server, sind eigentlich 3 Sachen wichtig:
- das ./configure darf kein "--with-apxs" enthalten (Das Modul für den Apache. Zumindest darft du dieses nicht aktivieren, wenn du es mitbauen lässt. Es läuft ja bereits das Modul von deinem PHP4)

- ein "--with-config-file-scan-dir" mit passendem Pfad muss drin sein (evtl. auch eine eigene php.ini mit - "-with-config-file-path" für dieses PHP festlegen)

- und mit "--program-suffix" gibst du diesen Binarys einen anderen Namen. ein z.B. "php-cgi" oder "php" gibt es ja wohl schon. Das könnte dann damit "php-cgi5" bzw. "php5" sein. (wird dann auch passend für "phpize" übernommen. also z.B: "phpize5")

Wo man jetzt diese Configure-Options für das BSD Portsystem festlegt, damit sie beim Bauen berücksichtigt werden, kann dir hoffentlich jemand anderes sagen...

Vielen Dank für Deine Ausführungen!

Offen gesagt: Für mich war bisher DAS PHP, das in /usr/local/bin abgelegt ist, die CGI-Variante. Aber in der Tat gibt es dort noch eine PHP-CGI. Ich lasse via cron mehrmals am Tag bestimmte PHP-Scripte ausführen und muss daher irgendwie hinkriegen, dass /usr/local/bin/php (PHP 5) andere Extensions lädt als das PHP 4-Modul unter Apache. Leider greifen aber beide, sowohl das PHP-MODUL unter Apache als auch das /usr/local/bin/php auf die extensions.ini unter /usr/local/etc/php zu.

In der Tat scheint dies nur über eine Veränderung von "--with-config-file-scan-dir" möglich zu sein, die sich allerdings nur auf /usr/local/bin/php auswirken darf und nicht auf das Apache-Modul, das bei mir ja ein PHP4 und nicht PHP5 ist.

Nette Grüße
testit
 
Also wenn ich mir das Makefile von dem Port anschau, dann hat der dort das "--with-config-file-scan-dir" fest definiert und lässt sich nicht überschreiben...

Was mir noch einfällt wäre ein:
Code:
cd /usr/ports/lang/php5
make DISABLE_CONFLICTS=1 install PREFIX=/usr/local/php5
make clean
Das PHP5 CLI wäre dann in "/usr/local/php5/bin". Analog ist dann für die benötigten Packages zu verfahren (PREFIX setzen).


Allerdings:
Du solltest vielleicht wirklich drüber nachdenken, nach all den Jahren wo es PHP5 als Release gibt, das jetzt endlich grundsätzlich einzusetzen. Gerade auch weil PHP4 jetzt ja endlich wirklich tot ist und ohne Support.
 
Zuletzt bearbeitet:
Also wenn ich mir das Makefile von dem Port anschau, dann hat der dort das "--with-config-file-scan-dir" fest definiert und lässt sich nicht überschreiben...

Was mir noch einfällt wäre ein:
Code:
cd /usr/ports/lang/php5
make DISABLE_CONFLICTS=1 install PREFIX=/usr/local/php5
make clean
Das PHP5 CLI wäre dann in "/usr/local/php5/bin". Analog ist dann für die benötigten Packages zu verfahren (PREFIX setzen).


Allerdings:
Du solltest vielleicht wirklich drüber nachdenken, nach all den Jahren wo es PHP5 als Release gibt, das jetzt endlich grundsätzlich einzusetzen. Gerade auch weil PHP4 jetzt ja endlich wirklich tot ist und ohne Support.

Hi,
danke für den Beitrag!

Ich habe ein phpBB-Board mit diversen MODs, die nicht unter PHP5 laufen und erst einmal angepasst werden müssen, was leider nicht auf die Schnelle geht, da zunächst einmal herausgefunden werden muß, was in dem fremde Sriptcode eigentlich inkompatibel zu PHP5 ist.

Was mir noch nicht klar ist: Warum kann ich nicht einfach NUR das PHP für das CLI neu erstellen lassen, ohne dass die bestehenden Module fuer Apache etc. ebenfalls eneut erzeugt werden?

Ich brauche doch lediglich eine PHP5 binary mit einer anderen "--with-config-file-scan-dir" als das Apache Modul, damit ich andere Extensions bestimmen kann.


Nette Grüße
testit
 
Was mir noch nicht klar ist: Warum kann ich nicht einfach NUR das PHP für das CLI neu erstellen lassen, ohne dass die bestehenden Module fuer Apache etc. ebenfalls eneut erzeugt werden?
Über "make config" (vor "make install") im Portsdir kannst du ja festlegen, wie der Port genau gebaut werden soll.

Ich brauche doch lediglich eine PHP5 binary mit einer anderen "--with-config-file-scan-dir"
Siehe der erste Satz in meinem letzten Post.
 
Zurück
Oben