Ausführen von PHP Script gibt "Segmentation fault"

Bash, Shell, PHP, Python, Perl, CGI
lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-18 16:41

Code: Select all

<?
$db_connect_host="localhost";
$db_connect_user="***";
$db_connect_pass="";
$db_connect_db="***";
$db=mysql_connect("$db_connect_host", "$db_connect_user", "$db_connect_pass");
mysql_select_db("$db_connect_db",$db);

if(!$db){
  mail("****","***","From: ***<***>nContent-Type: text/html");
  
}?>
Genau dieses PHP Script macht Mucken.

So versuche ich es auf zurufen:
/usr/bin/php4 /var/www/irgendein-ordner/test.php

das kommt dabei heraus:
Segmentation fault

Mehr kommt da net, LogFiles sind unauffällig.

Wo könnte der Fehler liegen?
Was mache ich falsch?

MFG
Lord_Adley

pennybridge
Posts: 64
Joined: 2002-10-24 21:37

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by pennybridge » 2006-12-18 17:27

Lord_Adley wrote:

Code: Select all

So versuche ich es auf zurufen:
/usr/bin/php4 /var/www/irgendein-ordner/test.php[/quote]

Deine Lösung heisst Shebang

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-18 17:47

Pennybridge wrote:Deine Lösung heisst Shebang
Der OP versucht ja nicht, das Script direkt auszuführen, sondern ruft den Interpreter selbst auf - das sollte also eigentlich nicht den Segfault auslösen.

@Lord_Adley
Was sagt denn ein

Code: Select all

`which php4` -v
/usr/bin/php4 -v
Sagen denn beide dasselbe? Handelt es sich dabei um ein CLI-fähiges PHP-Binary?

Wenn PHP als CLI-Interpreter i. O. ist, dann kann der Segfault viele Ursachen haben... u. a. ein korruptes Binary (tritt der Fehler auch bei anderen Skripten auf?), korrupte Libraries oder schlicht und ergreifend ein Hardware Defekt (Memory oder HD - wobei Du dann auch bei anderen Anwendungen sporadisch Segfaults bekämst).

EDIT
Oops, zwei Dinge hatte ich noch vergessen:

1. Lass PHP mal etwas ausführlicher werden:

Code: Select all

/usr/bin/php4 -e -f <dein-skript.php>
2. Was sagt

Code: Select all

php -m | grep mysql

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-19 09:31

jfreund wrote:
1. Lass PHP mal etwas ausführlicher werden:

Code: Select all

/usr/bin/php4 -e -f <dein-skript.php>
geht auch net, gleicher Fehler
jfreund wrote: 2. Was sagt

Code: Select all

`which php4` -v 
/usr/bin/php4 -v
PHP 4.3.3 (cli) (built: Nov 19 2003 23:12:29)
Das mit dem Shebang hat leider auch net zum Ziel geführt.

Fast hätte ichs vergessen. Ich habe insgesamt 5 Server zur Verfügung auf dreien läuft das Script nicht und verursacht diesen Segmentation Fault.

Die drei laufen mit Debian und php4, die anderen Beiden haben Suse und php5.
Kann es daran liegen?

MFG
Lord_Adley

//EDIT:
Was mir aufgefallen ist nach weiteren Tests: Es geht nur schief wenn ich den MySQL connect drin lasse. Wenn der auskommentiert ist und ich andere Sachen ausführen lasse geht das ohne Probleme. Ich hab jetzt die lange Fassung sowie die Kurzfassung des connects ausprobiert, beide Male "Segmentation Fault".

outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by outofbound » 2006-12-19 11:12

Hast du dein PHP auch gegen die richtigen Libs gebaut?

Gruss,

Out

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-19 11:49

Sorry aber ich kann dir nicht ganz folgen, was meinst du mit "gegen die richtigen Libs gebaut"??

Jedoch habe ich einen anderen Weg gefunden um mein Ziel zu erreichen

lynx -dump http://IP.des.servers./ordner/test.php

Das funzt.

Aber das beseitigt mein Problem nur bis zum nächsten Script.

Ich hab irgendwo was gelesen, das eine php-cli auf dem Debian installiert werden müsste.

Kanns daran hängen, denn die ist nicht auf den Servern installiert.
Im Falle der nachträglichen Installation, gibts da Problempunkte die man beachten sollte?

MFG
Lord_Adley

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-19 12:40

Lord_Adley wrote:Ich hab irgendwo was gelesen, das eine php-cli auf dem Debian installiert werden müsste.

Kanns daran hängen, denn die ist nicht auf den Servern installiert.
Normalerweise würde ich sagen: ja. Aber als was würdest Du das dann bezeichnen:
Lord_Adley wrote:PHP 4.3.3 (cli) (built: Nov 19 2003 23:12:29)
Probiere doch mal folgendes:
a) Ausgabe von

Code: Select all

php -m | grep mysql
mal hier posten
b) Beim Aufruf des PHP-Interpreters mal explizit eine php.ini mit angeben - und zwar eine, die auf Webserver-bezogenen Kram verzichtet!

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-19 14:27

php4 -m | grep mysql
mysql <-- das is die Ausgabe, mehr nicht!

Und nu?

und das mit der php.ini angeben. öhm, wie geht das? Sorry bin noch noob in solchen Sachen.

MFG
Lord_Adley

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-20 01:51

Lord_Adley wrote:mysql <-- das is die Ausgabe, mehr nicht!
OK, das heißt für mich erst mal, dass Dein PHP mit MySQL-Unterstützung kompiliert wurde (und nicht etwa mit mysqli).
Lord_Adley wrote:und das mit der php.ini angeben. öhm, wie geht das? Sorry bin noch noob in solchen Sachen.

Code: Select all

php4 -h
verrät Dir, welche Möglichkeiten Du beim Aufruf von PHP hast. Ich würde an Deiner Stelle mal mit den Optionen -n und -c ein bisschen spielen...

Ich habe allerdings den leisen Verdacht, dass die MySQL-Client-Bibliothek, gegen die Deine PHP-Version gebaut wurde, nicht mehr mit dem von Dir eingesetzen Server konform ist. AFAIR gab's da mal eine größere Umstellung... SuFu oder Google sollte mehr dazu zu Tage fördern.

Deiner Aussage nach tritt das Problem auf den Debian-Servern auf - hast Du da PHP und MySQL aus unterschiedlichen Quellen (bzw. nicht aus dem offiziellen Debian-Repository) installiert? Das könnte zu einer solchen Inkonsistenz führen...

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-20 11:05

Ich hab nun mit ein paar Parametern rumgespielt.

-n --> Call to undefined function

-c --> Function registration failed in mehrfacher Ausfertigung

Die Pakete wurden über die apt-get funktion oder über die Seite http://www.debian.org/distrib/packages gezogen, von daher denke ich nicht das es da zu Kollisionen kommen sollte.

Und was die php-cli angeht, habe ich das in einem anderen Forum (keine Ahnung mehr wie das hiess) gelesen und mal nachgeschaut ob ich die auf den Servern finde.

Gefunden habe ich die, aber nicht als installiertes Paket. Über apt-cache finde ich das Paket, aber trau mich ehrlich gesagt nicht das ding zu installieren.

Ganz konfus ist aber auch das ein bekannter von mir ebenfalls einen Server gemietet hat vom gleichen Anbieter wie ich und mit der gleichen Konfiguration und bei dem bringt das Script keine Fehlermeldung und bei den Servern die ich nutze geht das auf keinem. Und der hat php-cli auch net installiert.

Wo kann also bitte schön der Fehler liegen? Ich weiss nun nimmer weiter.

MFG
Lord_Adley

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-20 12:15

Was den Aufruf mit -c angeht:

Code: Select all

php4 -c /pfad/zur/php.ini -f /pfad/zum/skript.php
Findest Du denn in den Logs von MySQL irgendetwas? Poste auch mal den relevanten Teil der php.ini (nur den Part mit der MySQL-Konfiguration, ohne Kommentare). Insbesondere mysql.default_socket und mysql.default_host wären interessant...

Um PHP etwas "gesprächiger" zu machen, kannst Du noch folgendes in Deiner php.ini eintragen:

Code: Select all

error_reporting  =  E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = On
log_errors = On
error_log = /var/log/lighttpd/php_err.log
Den Pfad für's Error-Log musst Du natürlich noch anpassen; v. a. muss der User, unter dem Du das PHP-Skript aufrufst, dort Schreibberechtigung haben.

Du hast in einem Deiner Posts weiter oben geschrieben, dass die Ausführung über den Webserver funktioniert - wie wird PHP denn dort angesprochen? Über mod_php? Welche php.ini wird dort verwendet? Welche PHP-Version?

Wenn das Problem nur auf dem einen Server bestehen würde, hätte ich gesagt, das php-Binary hat 'nen Schuss - aber Du sagtest, es geht auf allen Deinen Debian-Servern nicht?! Und über den Webserver ausgeführt geht es auf allen Servern? => Dann ist es höchstwahrscheinlich entweder ein Konfigurationsproblem (PHP und/oder MySQL)oder Du hast auf allen Servern inkonsistente Versionen installiert => mal über apt-get ein Update gemacht?

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-20 12:26

Lord_Adley wrote:Die Pakete wurden über die apt-get funktion oder über die Seite http://www.debian.org/distrib/packages gezogen, von daher denke ich nicht das es da zu Kollisionen kommen sollte.
Nur, wenn Du alle Pakete aus demselben Zweig (z. B. stable) installiert hast!

Ich selbst nutze kein Debian, deshalb kann ich Dir nicht viel zum Paketmanagement erzählen, aber ich habe eben gesehen, dass php4 nur ein Meta-Paket ist... und das sowohl Client- als auch Server-Pakete für MySQL 4.0 und 4.1 zur Verfügung stehen - mixen ungesund....

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-20 15:27

Auszug aus der php.ini:
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On

; Maximum number of persistent links. -1 means no limit.
mysql.max_persistent = -1

; Maximum number of links (persistent + non-persistent). -1 means no limit.
mysql.max_links = -1

; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
mysql.default_port =

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket =

; Default host for mysql_connect() (doesn't apply in safe mode).
mysql.default_host =

; Default user for mysql_connect() (doesn't apply in safe mode).
mysql.default_user =

; Default password for mysql_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password"
; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well.
mysql.default_password =


Log:
20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_errno in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_affected_rows in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_insert_id in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_result in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_num_rows in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_num_fields in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_row in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_array in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_assoc in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_object in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_data_seek in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_lengths in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fetch_field in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_seek in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_free_result in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_name in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_table in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_len in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_type in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_field_flags in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_escape_string in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_real_escape_string in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_stat in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_thread_id in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_client_encoding in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_ping in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_get_client_info in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_get_host_info in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_get_proto_info in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_get_server_info in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_info in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fieldname in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fieldtable in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fieldlen in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fieldtype in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_fieldflags in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_selectdb in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_freeresult in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_numfields in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_numrows in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_listdbs in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_listtables in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_listfields in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_db_name in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_dbname in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_tablename in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: Function registration failed - duplicate name - mysql_table_name in Unknown on line 0
[20-Dec-2006 16:19:17] PHP Warning: mysql: Unable to register functions, unable to load in Unknown on line 0


Hilft das weiter?

User avatar
daemotron
Administrator
Administrator
Posts: 2800
Joined: 2004-01-21 17:44

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by daemotron » 2006-12-20 16:07

Ich befürchte _nach wie vor_, dass Du ein Unverträglichkeitsproblem in puncto Versionen hast. Ich hab mir jetzt eben noch mal die Debian Package Database vorgenommen. Deine PHP-Version ist:
Lord_Adley wrote:PHP 4.3.3 (cli) (built: Nov 19 2003 23:12:29)
Die aktuelle PHP4 in stable ist aber 4.4.3 (siehe http://packages.debian.org/stable/web/php4). Hast Du noch ein Woody, oder datest Du Deine Server nicht regelmäßig up? Bevor wir jetzt hier weiter rätseln, solltest Du erst mal Dein PHP4 und Deine MySQL-Installation auf den aktuellen Stand (stable) updaten - und dann mal sehen, ob's dann nicht zufällig funktioniert :wink:

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-20 16:25

ok auch wenn ich mich nun als Lachnummer oute, aber das hat bisher immer unser Serveradmin gemacht.

Ich bin eigentlich nur der Interimsadmin. Der andere ist nicht mehr verfügbar wenn du verstehst was ich meine.

acepilot
Posts: 86
Joined: 2003-07-30 17:42

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by acepilot » 2006-12-20 21:30

Lord_Adley wrote:ok auch wenn ich mich nun als Lachnummer oute, aber das hat bisher immer unser Serveradmin gemacht.

Ich bin eigentlich nur der Interimsadmin. Der andere ist nicht mehr verfügbar wenn du verstehst was ich meine.
Nun ja, ist ja nicht schlimm. Jeder fängt mal an. Hast du dir denn schonmal die Grundlagen zu Debian zu Gemüte geführt? Gerade wie man Pakete installiert und updatet?

Google mal nach apt-get, dann solltest du in der Lage sein deine Pakete zu Updaten. :wink:

Gruß
Markus

User avatar
Joe User
Project Manager
Project Manager
Posts: 11602
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by Joe User » 2006-12-20 22:27

Code: Select all

PHP Warning: Function registration failed - duplicate name
MySQL wurde statisch einkompiliert und als Modul geladen, das kann nicht funktionieren...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-21 09:59

@ acepilot:

Jop apt hab ich mich schon eingelesen und auch genutzt.

@ Joe User
Schön das du mir sagst das es nicht funktionieren kann, nur wie bring ichs dazu dass es funktioniert?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by Roger Wilco » 2006-12-21 12:43

Lord_Adley wrote:Schön das du mir sagst das es nicht funktionieren kann, nur wie bring ichs dazu dass es funktioniert?
Entferne die "doppelte" Erweiterung aus der php.ini.

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-21 13:04

*bahnhof such*

Meint ihr extension=mysql.so ?

Oder wie soll das aussehen?

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by Roger Wilco » 2006-12-21 13:05

Ja. Eintrag löschen oder auskommentieren.

lord_adley
Posts: 12
Joined: 2006-09-25 15:41

Re: Ausführen von PHP Script gibt "Segmentation fault"

Post by lord_adley » 2006-12-21 13:14

steht zwar zweimal drin, is aber einmal auskommentiert.

Wenn ich beide mal zum test auskommentiere geht gar nüx mehr.

Egal welche ich drinlasse, der "Segmentation fault" kommt leider immer noch.

MFG
Lord_Adley