PHP Installation --> Ports --> Options

MaMaBacardi

Well-Known Member
Ich habe da mal eine Frage zur Installation von Programmen über die Ports. Wie gebe ich Optionen mit, wenn ich mit portinstall oder make install ein Programm (hier: PHP5) installieren will? PHP5 per Hand zu kompilieren ist nicht das Problem, da habe ich einfach mit ./configure die Optionen angegeben. Ich habe gelesen, dass ich eine options-datei unter /var/db/ports/php5/ erstellen soll und die Installationsroutine beim Kompilieren darauf zugreift. Ist das richtig und wenn ja, geht das auch wenn schon ein selbst-kompiliertes PHP5 schon installiert ist oder sollte ich die PHP5-Verzeichnisse vorher löschen?
 
mit make -WITH_BLAH zb kannst optionen mitgeben die du in der Makefile findest, oder du nutzt vorher ein make configure, dann werden die verfügbaren optionen über ein ncurses menü abgefragt und in die options datei gespeichert, diese optionen werden aber auch beim installieren abgefragt, kannst aber im vorraus mit make configure schaun obs optionen gibt, die datei ist ganz gut wenn du zb ein make reinstall durchführst, dann wird nämlich cniht nochmal gefragt
 
Zuletzt bearbeitet:
Code:
# portinstall -h
[...]
    -m, --make-args=ARGS     Specify arguments to append to each make(1)
                             command line
[...]

Beispiel:

Code:
# portinstall -m "WITH_ME=yes,WITH_YOU=no" anything
 
Wenn ich Euch richtig verstanden habe kann ich wie bei einer normalen Kompilierung mit portinstall -m php5 WITHWITH_APACHE2=true \
WITHOUT_DEBUG=true \
WITH_IPV6=true \
WITH_BCMATH=true \
WITH_BZ2=true \
WITH_CALENDAR=true \
WITH_CURL=true \
WITH_FILEINFO=true \
WITH_FTP=true \
WITH_GD=true \
WITH_GETTEXT=true \
WITH_GMP=true \
WITH_IMAGICK=true \
WITH_IMAP=true \
WITH_LDAP=true \
WITH_MCRYPT=true \
WITH_MCVE=true \
WITH_MHASH=true \
WITH_MING=true \
WITH_MNOGOSEARCH=true \
WITH_MYSQL=true \
WITH_NCURSES=true \
WITH_OPENSSL=true \
WITH_PCRE=true \
WITH_PDF=true \
WITH_POSIX=true \
WITH_PSPELL=true \
WITH_SESSION=true \
WITH_SNMP=true \
WITH_SOCKETS=true \
WITH_SYSVMSG=true \
WITH_SYSVSEM=true \
WITH_SYSVSHM=true \
WITH_TIDY=true \
WITH_TOKENIZER=true \
WITH_WDDX=true \
WITH_XML=true \
WITH_ZIP=true \
WITH_ZLIB=true \

alle Optionen angeben?
 
Wenn es nur um die PHP Erweiterungen geht kannst Du es auch einfacher haben.

a) jedes Modul ist als Separater Port verfügbar (zB. www/php5-session)
b) es gibt einen "globalen" Erweiterungen Port (lang/php5-extensions)

beides Setzt natürlich voraus das Du das PHP aus den Ports verwendest.

Gruß paefchen

PS: whereis php5-<extension> hilft Dir auch
 
Jup, normalerweise reicht

# portinstall apache
--> apache2 installieren "yes"
# portinstall php5

und dann ggf. noch extension via portinstall php5-... nachinstallieren. apache neustarten nicht vergessen :)
 
ja wo das Verzeichnis "extensions" ist weiß ich aber wann und wie ich damit die gewünschten Optionen gleich mitinstalliere weiß ich nicht
 
aso nacheinander wohl! Also ich installiere jetzt PHP5 mit "portinstall php5" und anschließend die extensions mit "make install clean" im extensionsordner! Oder?
 
Ich glaube Du verstehst mich nicht.
Du kannst PHP als Modul (www/mod_php5), Cli (lang/php5-cli) oder beides (lang/php5) installieren. Wenn Du gleich die Extensions Intsallierts bevor Du eine PHP Version installiert hast, nimmt er lang/php5 als Abhängigkeit und installiert das gleich mit. Was das sein sollte was Du willst.
Wenn Du noch was anderes angeben willst was Damit nicht abgedeckt ist, schau Doch mal in die Makefile von lang/php5. Da siehst Du dann schon was noch geht. Ansonsten ist oft ein grep defined Makefile sehr aufschlussreich.
 
Also ich habe jetzt das gemacht was Enrico gesagt hat und zuerst PHP5 über die Ports installiert und anschließend php-extensions über die Ports. Wenn ich es mir recht überlege wäre es natürlich cleverer gewesen, wenn ich zuerst php-extensions installiert hätte, da dann automatisch PHP5 installiert worden wäre. Richtig?
 
das bleibt alles gehupft wie gesprungen, wenn PHP schon da ist kompiliert er halt nur noch die ausgewählten Extensions und nicht mehr PHP, ist PHP selber nicht nicht vorhanden dann wird dieses halt vorerst gebaut.
 
Jeb habs nun gerallt!!! Danke allen für die schnelle Hilfe!!!

Eine Frage tat sich allerdings nach der erfolgreichen Installation dann doch noch auf:
Habe als Option "Imagick" mitinstalliert und es wird auch unter /var/db/ports/php-extensions/ im Optionsfile angezeigt "WITH_IMAGICK=true" aber in der phpinfo.php, die ich geschrieben habe, ist davon nichts zu lesen und in meinem Wiki habe ich immer noch das Problem, dass die Bilder nicht skaliert werden. Muss ich "IMAGICK" oder auch andere Module noch irgendwie aktivieren???
 
werden die restlichen module geladen? wenn nicht schau mal ob in der php.ini der pfad bei "extension_dir = " stimmt
 
nein werden sie glaube ich nicht! jedenfalls werden sich nicht in der phpinfo angezeigt. ich werde es mal versuchen, allerdings bin dienstag erst wieder in der firma!
 
ImagMagick ist kein Extension von PHP sondern wird über die PHP-Shell aufgerufem mittels system() oder `` schau halt mal in die Doku.

Wenn die anderen Module nicht aufgelistet werden, hast Du den Apache mal neugestartet?

Sind die Extensions den in /usr/local/etc/php/extensions.ini eingetragen?
Aber auch in dieser Datei wird kein ImagMagick auftauchen, da es eben keine PHP Extension ist.

Gruß paefchen
 
paefchen schrieb:
ImagMagick ist kein Extension von PHP sondern wird über die PHP-Shell aufgerufem mittels system() oder ``
Wieso sollte das keine Extension sein? Da könnte man ja auch sagen Iconv sei keine Extension, nur weil es dies auch ein Konsolentool ist ;-)

imagick ist halt "nur" eine PECL-Extension und nicht direkt beim PHP-Source dabei. Allerdings beu ich mir PHP nicht über die Ports und kann daher nicht sagen ob diese Extension dort verfügbar ist (und jetzt keine Lust nachzuschauen *g*).

MaMaBacardi schrieb:
d4mi4n schrieb:
werden die restlichen module geladen?
nein werden sie glaube ich nicht! jedenfalls werden sich nicht in der phpinfo angezeigt.
Das Portsystem baut ja IMHO SharedExtensions. Jede gebaute und vorhandene Extension muss also im ExtensionDir als ".so" vorhanden sein. Damit man diese dann benutzen kann, muss sie dann noch, wie von "d4mi4n" gesagt, in der "php.ini" geladen werden.
 
@ paefchen:

Ja in der extensions.ini sind alle Module mit der Endung .so enthalten. Unter ihnen befindet sich auch Imagick!!!

@ all:

Der Pfad in der php.ini sieht so aus: extension_dir = "./"^M

Ich habe nun anstelle von "./" den Pfad "/usr/local/lib/php/20041030/" angegeben. In diesem Verzeichnis befinden sich die ladbaren Module mit der Endung ".so".

Vielen Dank!
 
Zurück
Oben