PHP-Interpreter kennt MySql-Befehle nicht
Hi Ich möchte einige PHP-Scripte von der Shell auf mit dem PHP-Interpreter ausführen, ähnlich wie ein Basic-, oder Pearscript - Aufruf "php meinscript.php". Während normales PHP wie zB, das Lesen,Parsen und Aufbereiten von Daten aus einer Textdatei problemlos geht, scheitert das ganze an den ersten MySQL-Funktionsaufrufen. Der Interpreter meint, er kenne diese Funktionen nicht.
~/....> php sqltest.php SQL-Test<br>
Fatal error: Call to undefined function: mysql_connect() in /..../sqltest.php on line 15
Kopiere ich die Datei in das Apache-Webverzeichnis (/srv/www/htdocs) geht das ganze auf Anhieb (wie zB. auch phpMyAdmin oder andere selbsterstellte Scripte) Was muß noch angepasst werden, damit auch der PHP-Interpreter die MySql-Befehle erkennt ? Jürgen ==============8<-------------------------- <?php error_reporting(E_ALL); echo "SQL-Test<br>\n"; $mysql = MYSQL_CONNECT("localhost","abc","xyz"); if ($mysql) { echo "Datenbank ok<br>\n"; MYSQL_CLOSE($mysql); } else echo "Fehler Datenbank<br>\n"; echo "SQL-Test Ende<br>\n"; ?> (Passwörter und Pfadangaben geändert) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Jürgen Hochwald wrote:
Hi
Ich möchte einige PHP-Scripte von der Shell auf mit dem PHP-Interpreter ausführen, ähnlich wie ein Basic-, oder Pearscript - Aufruf "php meinscript.php".
Während normales PHP wie zB, das Lesen,Parsen und Aufbereiten von Daten aus einer Textdatei problemlos geht, scheitert das ganze an den ersten MySQL-Funktionsaufrufen. Der Interpreter meint, er kenne diese Funktionen nicht.
~/....> php sqltest.php SQL-Test<br>
Fatal error: Call to undefined function: mysql_connect() in /..../sqltest.php on line 15
Kopiere ich die Datei in das Apache-Webverzeichnis (/srv/www/htdocs) geht das ganze auf Anhieb (wie zB. auch phpMyAdmin oder andere selbsterstellte Scripte)
Was muß noch angepasst werden, damit auch der PHP-Interpreter die MySql-Befehle erkennt ?
Das Script sieht okay aus und funktioniert auch bei mir. Versuche doch mal, ob der aufrufende User ein Rechte-Problem hat. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 9. April 2007 13:39 schrieb Sandy Drobic:
Jürgen Hochwald wrote:
Das Script sieht okay aus und funktioniert auch bei mir. Versuche doch mal, ob der aufrufende User ein Rechte-Problem hat.
Ich habe testweise den Benutzer das Recht 'mysql' gegeben, hat aber nichts gebracht. Der Benutzer ist der Standardbenutzer, wie er bei der Installation von Suse (Vers. 10.0) eingerichtet wurde, lediglich Rechte für den Zugriff auf die serielle Schnittstelle wurden nachträglich gesetzt. 'Normale' MySQL-Funktionen gehen, mit dem Kommandozeilentool 'mysql' kann ich Datenbanken einsehen und Daten einfügen. Mir scheint es eher ein Problem mit den Pfadangaben zu sein da der Befehl selbst nicht erkannt wird. Wäre es ein Rechteproblem, würde ich eher 'Permission denied' oder so erwarten. In /etc/php5/ gibt es zwei Verzeichnisse, eins für Apache (apache/) und eins für den Interpreter (cli/), in beiden ist eine php.ini. Die Abschnitte für mysql sind bei beiden aber identisch. Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon, Apr 09, 2007 at 01:32:14PM +0200, Jürgen Hochwald wrote:
Hi
Ich möchte einige PHP-Scripte von der Shell auf mit dem PHP-Interpreter ausführen, ähnlich wie ein Basic-, oder Pearscript - Aufruf "php meinscript.php".
Während normales PHP wie zB, das Lesen,Parsen und Aufbereiten von Daten aus einer Textdatei problemlos geht, scheitert das ganze an den ersten MySQL-Funktionsaufrufen. Der Interpreter meint, er kenne diese Funktionen nicht.
~/....> php sqltest.php SQL-Test<br>
Fatal error: Call to undefined function: mysql_connect() in /..../sqltest.php on line 15
Kopiere ich die Datei in das Apache-Webverzeichnis (/srv/www/htdocs) geht das ganze auf Anhieb (wie zB. auch phpMyAdmin oder andere selbsterstellte Scripte)
Was muß noch angepasst werden, damit auch der PHP-Interpreter die MySql-Befehle erkennt ?
Ist php5-mysql installiert? Ciao, MArcus -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 9. April 2007 14:18 schrieb Marcus Meissner:
Ist php5-mysql installiert?
Die PHP-mysql-Pakete sind installiert. Es funktioniert alles problemlos über den Webbrowser (also über Apache).
weser:~ # rpm -q php5-mysql php5-mysql-5.0.4-9.22 Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Jürgen Hochwald schrieb:
Am Montag, 9. April 2007 14:18 schrieb Marcus Meissner:
Ist php5-mysql installiert?
Die PHP-mysql-Pakete sind installiert. Es funktioniert alles problemlos über den Webbrowser (also über Apache).
Die php.ini's schon verglichen (/etc/php5 oder so)? Martin P.S.: Die Listenadresse ist schon länger opensuse-de@opensuse.org -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag, 9. April 2007 17:25 schrieb Martin Ereth: Auch wenn ich mit php -c /etc/php5/apache2/php.ini sqltest.php aufrufe, erhalte ich dieselbe Fehlermeldung. Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Montag, 9. April 2007 17:19 schrieb Jürgen Hochwald:
Die PHP-mysql-Pakete sind installiert. Es funktioniert alles problemlos über den Webbrowser (also über Apache).
Vielleicht noch eine Idee: Hast Du Deine Firewall so konfiguriert, dass sie auch vor dem internen Netzwerk schützt? Vielleicht blockiert die Firewall den Zugriff vom php-Interpreter auf den mysql-socket. Wie gesagt, bei mir funktionierts... -- Michael Herrmann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi, Meine ganze Entwicklungsarbeit ist geblockt, solange ich dafür keine Lösung finde ... Muß ich in der Cli-Version die Mysql-Sachen explizit mit 'include' einbinden ? Wenn ja, wie heißt das Include und wo finde ich das ? Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mittwoch, 11. April 2007 12:18 schrieb Jürgen Hochwald:
Meine ganze Entwicklungsarbeit ist geblockt, solange ich dafür keine Lösung finde ... Muß ich in der Cli-Version die Mysql-Sachen explizit mit 'include' einbinden ? Wenn ja, wie heißt das Include und wo finde ich das ?
also irgendwie werde ich nicht schlau aus Deiner Fehlerbeschreibung. Ich rufe auf mehreren Systemen php-Skripts aus der Kommandozeile per cron auf, die alle MySQL Querys absetzen und entsprechend reagieren. Gib mal ein paar Infos dazu: 1.) Mit welchem user startest Du Dein Skript? 2.) Welche Rechte hat das Skript? 3.) In welchem Verzeichnis liegt das skript (außerhalb von <DocumentRoot> war das glaub ich, oder?) Eine Idee so als Workaround: Wenn das Skript über den Apache funktioniert, dann legs halt in ein bestimmtes Verzeichnis, das per .htaccess geschützt ist, so dass Du nur von localhost auf drauf zugreifen kannst, und machs dann per wget. Also wget http://localhost/script.php -- Michael Herrmann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Mon, Apr 09, 2007 at 01:32:14PM +0200, Jürgen Hochwald wrote:
Was muß noch angepasst werden, damit auch der PHP-Interpreter die MySql-Befehle erkennt ?
Probier mal dl("mysql.so"); oder probiere ob du die mysqli-Befehle nutzen musst. Peter -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Mehr durch Zufall habe ich herausgefunden, das die MySql-Befehle gehen, wenn ich statt 'php <script>' 'php5 <script>' aufrufe. Ein Blick in Yast zeigt dann, daß auch Teile von Php4 installiert waren/wurden - und der Aufruf von php geht dann auf die 4er Version. Dann wollte ich einfach den Php4-Kram löschen, geht aber nicht, da dann Konflikte auftreten mit phpMyAdmin. Damit ist der Werdegang des Problems klar: Um mir die Arbeit mir MySql zu erleichtern, hatte ich nachträglich phpMyAdmin installiert (Apache mit Php5 liefen schon länger), und mit dem phpMyAdmin wurden dann auch die Php4-Teile installiert. Hier wurde dann wohl auch der Link von Php auf Php4 umgesetzt. Offen bleibt die Frage, warum phpMyAdmin Php4 benötigt, obwohl das nicht einmal mit MySql umgehen kann ?? Momentane Lösung ist, daß ich in allen Scripten explizit Php5 angebe, um die richtige Php-Version zu erhalten. Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Thu, Apr 12, 2007 at 11:35:23PM +0200, Jürgen Hochwald wrote:
Mehr durch Zufall habe ich herausgefunden, das die MySql-Befehle gehen, wenn ich statt 'php <script>' 'php5 <script>' aufrufe. Ein Blick in Yast zeigt dann, daß auch Teile von Php4 installiert waren/wurden - und der Aufruf von php geht dann auf die 4er Version. Dann wollte ich einfach den Php4-Kram löschen, geht aber nicht, da dann Konflikte auftreten mit phpMyAdmin. Damit ist der Werdegang des Problems klar: Um mir die Arbeit mir MySql zu erleichtern, hatte ich nachträglich phpMyAdmin installiert (Apache mit Php5 liefen schon länger), und mit dem phpMyAdmin wurden dann auch die Php4-Teile installiert. Hier wurde dann wohl auch der Link von Php auf Php4 umgesetzt.
Offen bleibt die Frage, warum phpMyAdmin Php4 benötigt, obwohl das nicht einmal mit MySql umgehen kann ??
Momentane Lösung ist, daß ich in allen Scripten explizit Php5 angebe, um die richtige Php-Version zu erhalten.
Wie sind denn die genauen Fehlermeldungen gewesen? *seufz* phpMyAdmin funktioniet auch mit php5 Ciao, Marcus -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Als ich mit Yast die Php4-Pakete wieder deinstallieren wollte, bekam ich das typische Hinweisfenster mit den nicht aufgelösten Abhängigkeiten und den Optionen, entweder php4 nicht zu deinstallieren, phpMyAdmin auch zu entfernen oder das Ganze zu ignorieren. Ich habe dann die Deinstallation abgebrochen und alles so gelassen. Beim Ausführen des Scriptes selbst (mit Php4) kommt die Meldung 'PHP Fatal error: Call to undefined function: mysql_connect() in...' Mit Php5 geht es dann aufruf php5 <script> statt php <script> Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (6)
-
Jürgen Hochwald
-
Marcus Meissner
-
Martin Ereth
-
Michael Herrmann
-
Peter Wiersig
-
Sandy Drobic