Archiv der Kategorie: Linux

Debian – Downgrade von PHP 5.3 auf PHP 5.2

!Verwende hier eine virtuelle Maschine und habe mir vorher (sicherheitshalber) einen Snapshot erstellt, Ihr solltet
auch unbedingt ein Backup machen!

Ich habe hier einen Debian ISPConfig-Server momentan mit der PHP Version 5.3.2
ein „dpkg – l | grep –i php5“ ergibt bei mir folgende Liste:

ii libapache2-mod-php5 5.3.2-0.dotdeb.2 server-side, HTML-embedded scripting language
ii php5 5.3.2-0.dotdeb.2 server-side, HTML-embedded scripting language
ii php5-cgi 5.3.2-0.dotdeb.2 server-side, HTML-embedded scripting language
ii php5-cli 5.3.2-0.dotdeb.2 command-line interpreter for the php5 script
ii php5-common 5.3.2-0.dotdeb.2 Common files for packages built from the php
ii php5-curl 5.3.2-0.dotdeb.2 CURL module for php5
ii php5-gd 5.3.2-0.dotdeb.2 GD module for php5
ii php5-imagick 5.3.2-0.dotdeb.2 imagick module for php5
ii php5-imap 5.3.2-0.dotdeb.2 IMAP module for php5
ii php5-mcrypt 5.3.2-0.dotdeb.2 MCrypt module for php5
ii php5-mysql 5.3.2-0.dotdeb.2 MySQL module for php5
ii php5-suhosin 5.3.2-0.dotdeb.2 suhosin module for php5

In der soures.list habe ich folgende Einträge, die waren nötig um PHP 5.3 zu installieren:

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

Diese ändere ich jetzt in:

#deb http://php53.dotdeb.org stable all
#deb-src http://php53.dotdeb.org stable all

dann ein „apt-get update“ damit die Datei neu gelesen wird, optional mache ich noch ein „apt-get clear“.
Damit man weiss welche Versionsnummer verwendet werden kann gebe ich ein:

apt-cache policy php5

folgende Ausgabe kommt dann:

php5:
Installed: 5.3.2-0.dotdeb.2
Candidate: 5.3.2-0.dotdeb.2
Version table:
*** 5.3.2-0.dotdeb.2 0
500 http://php53.dotdeb.org stable/all Packages
100 /var/lib/dpkg/status
5.2.13-0.dotdeb.1 0
500 http://ftp.hosteurope.de stable/all Packages
5.2.6.dfsg.1-1+lenny8 0
500 http://ftp.uni-koeln.de lenny/main Packages
500 http://security.debian.org lenny/updates/main Packages

Damit kann jetzt der Befehl generiert werden um die nötigen Module neuzuinstallieren:

apt-get install php5=5.2.13-0.dotdeb.1 libapache2-mod-php5=5.2.13-0.dotdeb.1 php5-cgi=5.2.13-0.dotdeb.1 php5-cli=5.2.13-0.dotdeb.1 php5-common=5.2.13-0.dotdeb.1 php5-gd=5.2.13-0.dotdeb.1 php5-imagick=5.2.13-0.dotdeb.1 php5-imap=5.2.13-0.dotdeb.1 php5-mcrypt=5.2.13-0.dotdeb.1 php5-memcache=5.2.13-0.dotdeb.1 php5-mysql=5.2.13-0.dotdeb.1 php5-suhosin=5.2.13-0.dotdeb.1

Sodala danach ein paar Test’s, sieht gut aus ISPConfig funktioniert auch ohne Probleme.

Nach MySQL Update, von 5.0.* auf 5.1.*, startet der SQL nicht mehr

Nach Update vom MySQL-Server auf die freigegebene Version 5.1, startet der SQL-Server nicht mehr.

Einfach in die my.cnf rein und die Zeile:

# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
skip-bdb

auskommentieren. Das es so aussieht:

# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
#skip-bdb

Danach lässt sich der Dienst wieder starten…

ISPConfig 3 und Apache Direktiven

Im ISPConfig kann man ja eigene Apache Direktiven eintragen z.B.
php_value memory_limit 128M
Dadurch wird der Speicher für PHP auf 128MB gesetzt.

Der eine oder andere (ich genau so) war ziemlich sprachlos, als ich das einstellte aber sich nichts änderte. Wenn man dann z.B. über phpinfo die Einstellungen überprüft und sich die Werte nicht ändern sollten, sollte man mal in den Domain-Einstellungen unter PHP die konfigurierte Version überprüfen.

Damit die Direktiven nämlich funktionieren muss man hier mod_php einstellen sonst geht da gar nix.

Im Forum von Howtoforge hat das einer so mal kurz und schmerzlos geschrieben, so das man es fast überlesen würde!!!

ISPConfig – MySQL-Abfrage zum anzeigen der Clients mit entsprechender Domain

Update…

Da im ISPConfig noch keine Übersicht existiert wo man schön sieht welche Domain zu welchem Client gehört (wie z.B. unter Plesk) habe
ich mir schnell mal eine SQL-Abfrage geschrieben die das erledigt:

SELECT t1.contact_name, t2.domain, t1.email, t1.icq, t2.server_id FROM `client` AS t1, `web_domain` AS t2, `sys_user` AS t3
Where t1.client_id = t3.client_id AND t2.sys_groupid = t3.groups;

Das Ergebnis sieht bei mir folgendermaßen aus und macht genau das was es machen soll:

Client Contact_Name domain email icq server_id
Max Mustermann www.max-mustermann.de test max-mustermann.de 1111111 1


Viel Spaß damit.

Linux – Befehl „rm *“ bringt „Argument list too long“

Heute hatte ich mal wieder ein ziemlich volles Verzeichnis auf einem Linux-Server und zwar das E-Mail-Postfach des Postmaster des Servers. Thunderbird konnte die 65.000 Nachrichten nicht mehr abrufen, bekam immer eine Zeitüberschreitung.

Dann mal auf den Server rauf und das Verzeichnis bereinigen aber wie?

Befehl: rm -f *
Meldung: Argument list too long

Befehl: find . -type f  | xargs rm -f {} \;
Meldung: Argument list too long

Befehl: find . -maxdepth 0 -type f  | xargs rm -f {} \;
Meldung: Argument list too long

Befehl: find . -maxdepth 1 -type f  | xargs rm -f {} \;
Meldung: Argument list too long

Befehl: ls | xargs rm -f
Keine Meldung nur ein Ergebnis das Verzeichnis war leer, na endlich… 😉

Ubuntu – kein Sound nach installieren des ATI-Treibers mit envy

Heute habe ich auf meinem mythbuntu einen aktuellen Treiber für meine ATI-Karte installiert, mittels envy.
Hat auch wunderbar und ohne Probleme funktioniert, nur danach ging bei mir kein Sound mehr!

Folgender Befehl ergab bei mir kein Ergebnis:

cat /proc/asound/cards  No such file or directory

Nach längerem hin und her war die Lösung eigentlich ganz einfach, durch die Routine des envy wurde auch der Kernel neuinstalliert
(soweit ich das richtig erkannt habe) aber leider die Kernel-Module nicht das war das Problem, weil das Modul für meine
Soundkarte nicht geladen worden ist (weil es nicht vorhanden war) bekame ich keine Töne aus meinen Lautsprechern.

Ein einfaches:

sudo apt-get install linux-ubuntu-modules-`uname -r`

lies wieder Töne aus meinen Lautsprechern erklingen

Weiteres Nützliches unter:
http://wiki.ubuntuusers.de/Soundprobleme#Installation

 

Linux – Alle Prozesse eines Programmes beenden

Folgendes Szenario:
Auf einem Linux-Systems will man alle Prozesse z.B. von QMail beenden mit ps aux | grep –i qmail kann man sich alle Prozesse und deren IDs ausgeben lassen, anstatt jetzt jeden einzelnen Prozess mit kill <ID> zu beenden einfach folgendes eingeben:

ps aux | grep -i qmail | awk ‚{print $2}‘ | xargs kill

Damit werden alle Prozesse beendet die mit QMail zu tun haben.

Linux – Dateiberechtigungen (ACL) sichern (rekrusiv)

Will man auf einem Linux-Server die Dateiberechtigungen sichern bietet sich „getfacl“ und zum wiederherstellen „setfacl“ an.
Bei „getfacl“ bin ich auf meinem Webserver schnell an die Grenzen gestoßen, will man nämlich alle Rechte (rekrusiv) sichern kann schnell folgender Meldung auftauchen:

Argument list too long

Da diese maximalen Argumente vom Kernel vorgegeben werden, könnte man auch durch neukompilieren und Erhöhung des Wertes diesem Fehler aus dem Weg gehen. Hier ist aber Linux im Einsatz und das geht auch anders, mit weniger Aufwand.

Ich habe das für mich so gelöst:

find . -exec getfacl {} \; >>sicherung.acl

Hier noch damit keinem symbolischen Link gefolgt wird:

find . -exec getfacl –P {} \; >>sicherung.acl

Falls jemand eine Anmerkung dazu hat, kann er mir diese gerne mitteilen.
Bin um jeden Tipp dankbar.

PHP Warning – PHP Startup: Unable to load dynamic library gd.so – libX11.so.6

Heute hatte ich ein seltsames Phänomen auf einen der Webserver der folgenden ausgestattet ist:

  • Suse Linux Enterprise Server 10 mit SP2
  • Plesk 8.6
  • Apache 2
  • PHP 5.2.5

Nach einem Neustart brachte der Apache immer folgenden Fehler im Error_Log:

PHP Warning:  PHP Startup: Unable to load dynamic library ‚/usr/lib64/php5/extensions/gd.so‘ – libX11.so.6: cannot open shared object file: No such file or directory in Unknown on line 0

Der Fehler drückte sich so aus, dass die Typo3’s und sonstige Anwendungen die dynamisch Bilder generierten und auf die gdlib zugreifen wollten, nicht mehr funktionierten und ein Fehler angezeigt wurde.

Die Lösung war:

Unter Yast das Paket „xorg-x11-libs“ neu zuinstallieren (reinstall „>“ einfach noch mal drüber)

Ein weiterer Fehler war z.B. beim Aufruf von Yast ein Fehler der ungefähr so lautete: qt Frontend failure.

Linux – Nach Symlink suchen/anzeigen und das Ziel anzeigen lassen

Folgendes Szenario:

Linux Web-Server mit vielen Typo3’s, die alle über einen Symlink (in meinem Fall heißt der „typo3_src“) auf die Source zugreifen.
Jetzt sollen die Typo3’s upgedatet werden, dazu muss man erst mal rausfinden welche Typo’s auf welche Source verweisen. Durch ein bisschen suchen im inet und einer kleinen Anpassung habe ich diese Aufgabe mit folgendem Befehl erledigt:

find . -type l -name typo3_src -printf ‚%l\n‘ -print0

Das Ergebnis sieht so aus:

Pfad wo der Symlink mit dem Namen „typo3_src“ gefunden worden ist und gleich im Anschluß das Ziel wo der Symlink hinzeigt z.B.:

./web1/httpdocs/typo3_src/ PFADZURSOURCE
./web2/httpdocs/typo3_src/ PFADZURSOURCE
./web3/httpdocs/typo3_src/ PFADZURSOURCE
./web4/httpdocs/typo3_src/ PFADZURSOURCE
./web5/httpdocs/typo3_src/ PFADZURSOURCE

Ausbaustufe wäre jetzt noch zwischen den Symlink und dem Ziel ein Leerzeichen einzupflanzen.