Archiv für PHP - Tipps

Drizzle macht Fortschritte

Jay Pipes, Monty Taylor, Eric Day, Stewart Smith und Lee Bieber haben Oracle verlassen und wechseln zum US-Provider Rackspace. Alle Fünf arbeiteten zuvor bei MySQL an Drizzle und wollen das auch in Zukunft in Diensten von Rackspace tun. Der MySQL-Fork Drizzle ist auf reine Webanwendungen zugeschnitten, extrem modular aufgebaut und verzichtet auf viele Funktionen, die MySQL im Hinblick auf den Einsatz als Unternehmensdatenbank in den letzten Jahren erhalten hat. Stattdessen steht bei Drizzle die Verarbeitung sehr vieler paralleler Anfragen auf Multicore-Systemen im Vordergrund.

Quelle: Golem.de

Viele Funktionen wurden in Module ausgelagert, so dass sie leicht ausgetauscht werden können. Beispielsweise wurden Log-in und Authentifizierung ausgelagert, andere Funktionen bleiben von vornherein außen vor, darunter Stored Procedures, Views, Triggers, Query Cache und Prepared Statements. Auch die verfügbaren Feldtypen wurden reduziert.

Drizzle ist über die Projekt Seite erhältlich
http://drizzle.org/

 in

Die Drizzle PHP Extension ist leider noch in der Beta-Phase.
PECL: http://pecl.php.net/package/drizzle
und seit 7 Monaten ruht augenscheinlich die PHP Extension

1
print 'Version: ' . drizzle_version() . "\n\n";
1
2
3
4
5
6
7
print "##########################\n";
print "Testing function interface\n";
print "##########################\n";
 
$drizzle= drizzle_create();
if (!$drizzle)
exit(0);

Zur O’Reilly MySQL User’s Conference soll Drizzles Cherry veröffentlicht werden.

Tags: ,

Verwandte Artikel

PHP 5.3.2: Bug-Fixes und Sicherheitskorrekturen

PHP 5.3.2 beseitigt zahlreiche Fehler und schließt Sicherheitslücken.

Die Security-Fixes betreffen den LCG-Wert der uniqid-Funktion, die behobene safe_mode-Validierung in tempnam() und einen möglichen open_basedir/safe_mode-Bypass in der Session-Extension.

Die vollständige Liste aller Änderungen findet man im PHP 5 ChangeLog.

Ende Februar 2010 erschien zudem mit PHP 5.2.13 eine korrigierte Version der PHP-Serie 5.2, in der ebenfalls Sicherheitslücken geschlossen und insgesamt rund 40 Fehler beseitigt wurden.

Quelle:
golem.de
php.net>

Migration nach PHP 5.3

Die Hoffnungen, dass PHP 5.3 voll abwärtskompatibel zu Version 5.2 werden würde, haben sich leider zerschlagen. Code, der in PHP 5.2 fehlerfrei lief, kann in 5.3 zu Fehlern führen oder Warnings ausgeben. Stas Malyshev hat nun ein Skript veröffentlicht, mit dem sich die Migration auf das aktuelle PHP-Version leichter bewerkstelligen lässt.

Quelle: PHP Magazin

Migration Skript von Stas Malyshev

miration.php wordpress (Version 2.9.2) ergab folgende Fehlermeldungen

http://www.oos-shop.de/service/blog/wp_php_5_3.txt

Sphinx Search

Sphinx Search Engine, die – wie sie sich selber nennt – “Free open-source SQL full-text search engine” ist ein gutes Tool, um die Volltextsuche auf dem eigenen Server zu beschleunigen.

Installing Sphinx on Windows

Wir entpacken die Zip – Datei an
C:\Sphinx\

Kopieren searchd.exe aus dem Verzeichnis
C:\Sphinx\bin\
nach
C:\Sphinx\

Konfiguration von Sphinx

Wir editieren: C:\Sphinx\sphinx.conf.in und speichern als C:\Sphinx\sphinx.conf

# die Datenquelle
source src1
{
# data source type. mandatory, no default value
# known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
type = mysql

##########
{

Einstellungen für die Datenbank-Verbindung

sql_host = localhost
sql_user = root
sql_pass =
sql_db = test
sql_port = 3306 # optional, default is 3306

Für den ersten Testen legen wir die Datenbank test mit den Beispieldaten aus C:\Sphinx\example.sql an.

Definition des Indexes

# Aus welcher Quelle? (oben definiert)
index test1
{
# document source(s) to index
# multi-value, mandatory
# document IDs must be globally unique across all sources
source = src1

Wohin mit den Dateien?
path = @CONFDIR@/data/test1

# docinfo
# Drei Möglichkeiten: are “none”, “inline” and “extern”
#
# “none” keine Informationen zum Artikel werden gespeichert
#
# “inline” Infos landen in doclist Datei (nur über 50 Mil. Atikel sinnvoll)
#
# “extern” Infos landen in getrennter Datei
#
# Wohin mit DocInfos? “extern”, weil unter 50 000 000 Artikel!
docinfo = extern

# morphology = stem_en, stem_ru, soundex
# morphology = libstemmer_german
# morphology = libstemmer_sv
# (Ähnlichkeit anhand von Endungen)
# Bei soundex wird die Aussprache beachtet: google und googl sind gleich
# none -> Keine Ähnlichkeiten suchen
morphology = none

# Pfad zur Stoppwort-Datei (Datei mit Wörtern,
# die nicht indexiert werden sollen wie: “und”, “der”, “die”, “das”, “ein” )
#
# stopword files list (space separated)
# optional, default is empty
# contents are plain text, charset_table and stemming are both applied
#
stopwords = @CONFDIR@/data/stopwords.txt

Den Betrieb aufnehmen…

C:\Sphinx> C:\Sphinx\searchd --install --config C:\Sphinx\sphinx.conf
--servicename SphinxSearch

FATAL: OpenSCManager<> failes: code=5, error=Zugriff verweigert
Bei dieser Meldung die Zugriffsrechte unter Windows ändern. (Rechte Maustaste)

http://robert.kolatzek.org/wblog/34/sphinx-search-engine-installation-und-betrieb-eine-einleitung

Tags:

HipHop beschleunigt PHP Software

HipHop wandelt PHP-Code in C++ um, der anschließend mit g++ in nativen Maschinencode übersetzt und ausgeführt wird. Dabei umfasst HipHop einen Code-Transformer, eine Reimplementierung des PHP-Runtime-Systems und neu geschriebene Versionen häufig genutzter PHP-Erweiterungen, die von den durch HipHop vorgenommenen Optimierungen profitieren.

Haiping Zhao auf facebook Developers

Einführungsveranstaltung im Facebook-Firmensitz in Palo Alto

Quelle: golem.de und PHP Magazin

PHP 5.3.1 veröffentlicht

PHP 5.3.1 beseitigt zahlreiche Fehler

ChangeLog
Release Announcement

Mit diesem Release werden Sicherheitslücken geschlossen … hoffentlich auch
http://www.exploit-db.com/exploits/10097

via Golem.de

PHP Unconference 2009

Der Termin für die diesjährige PHP Unconference steht fest.
Sie findet am 12. und 13. September in Hamburg statt.

Philosophenturm, University Hamburg
Von-Melle-Park 6

Diese und weitere Informationen dazu sind auf
http://www.php-unconference.de/ zu finden.

Was ist eine Unconference?

http://www.php-unconference.de/pages/about.html

Erste Beta von PHP 5.3

Die Beta 1 von PHP 5.3 steht bei Johannes Schlüter zum Donwload bereit. Er ist zusammen mit Lukas Kahwe Smith als Release Manager für PHP 5.3 verantwortlich.

http://schlueters.de/blog/archives/98-PHP-5.3-reached-beta-status.html

via golem

Die PHP.ini – PHP gegen Angriffe absichern

Die wichtigsten Sicherheitseinstellungen in der php.ini

  • allow_url_fopen – Diese Einstellung legt fest, dass PHP-Skripte nur lokale Dateien des Servers einbinden können. Verbietet man dies, wird es einem Angreifer erschwert seinen Schadcode aus dem Internet nachzuladen. Manchmal benötigt man dies allerdings, etwa um NewsFeeds von externen Servern zu laden. Empfohlene Einstellung: OFF
  • allow_url_include – Ähnlich wie allow_url_fopen, allerdings betrifft diese Einstellung nicht das öffnen von Dateien, sondern das inkludieren (include(), require()) von Dateien.
    Empfohlene Einstellung: OFF (erst ab PHP 5.2.0 verfügbar!)
  • disable_functions – Hier kann man eine, durch Komma separierte, Liste mit PHP-Funktionen eintragen deren Benutzung gesperrt sein soll. Wenn man sie nicht unbedingt benötigt, sollten hier alle Funktionen eingetragen werden, die einen serverweiten Zugriff gestatten. Manche Funktionen, wie etwa exec(), sind vergleichbar mit einem Generalschlüssel für den Server.
    Empfohlene Einstellung: escapeshellcmd, exec, ini_restore, passthru, popen, proc_nice, proc_open, shell_exec, system
  • display_errors – Im produktiven Einsatz sollten PHP-Fehlermeldungen nicht angezeigt werden. Fehlermeldungen sind nicht nur lästig und hinterlassen einen unprofessionellen Eindruck beim Kunden sondern, und das ist viel wichtiger, geben Fehlermeldungen jedem Angreifer wichtige Informationen über die Struktur und den Aufbau unserer Scripts.
    Empfohlene Einstellung: OFF
  • open_basedir – Legt ein Verzeichnis fest, in dem wir mit PHP arbeiten können. Auf diese Art kann man verhindern, dass ein manipuliertes Script Zugriff auf gewisse Ordner oder ganze Bereiche auf unserem Server erhält.
    Empfohlene Einstellung: Root Verzeichnis der Internetpräsenz
  • register_globals – Ist diese Einstellung aktiv, werden Variablen aus GET und POST global verfügbar gemacht und überschreiben damit ggfs. andere Variablen mit dem selben Name. Ist diese Einstellung deaktiviert, muss auf Eingaben von aussen explizit mit $_GET, $_POST, $_SESSION zugegriffen werden. Empfohlene Einstellung: OFF

  • safe_mode – Ist der Safe_Mode aktiviert, werden u.a. Berechtigungs-Prüfungen durchgeführt, ob die gewünschte Aktion von einem User durchführbar ist. Empfohlene Einstellung: ON

xdebug Installation

xdebug ist ein PHP-Debugger-Tool.

Um xdebug mit PHP nutzen zu können, muss das PECL Modul xdebug verwendet werden.

Da PECL-Erweiterungen nicht mit PHP mitgeliefert werden, müssen sie nachträglich installiert werden. Danach kann man sie, wie andere Erweiterungen auch, von PHP aus verwenden.

pecl install xdebug

Der Installer kümmert sich darum, dass die Erweiterung automatisch in der neusten Version heruntergeladen, das Archiv entpackt, die Erweiterung kompiliert und in das Erweiterungs-Verzeichnis kopiert wird. Im Anschluss muss die Erweiterung noch in der php.ini eingetragen werden.

Bei mir steht da folgendes drin:

# cat /etc/php5/apache2/php.ini | grep xdebug
zend_extension="/usr/lib/php5/extensions/xdebug.so"
xdebug.auto_trace=1
xdebug.auto_profile=1
xdebug.collect_params=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/r23/entwicklung/www/xdebug"

Die von XDebug generierten Files lassen sich dann in KCachegrind öffnen und nach verschiedenen Kriterien filtern.

Xdebug in