rexen96
Goto Top

Mysql auf Server 2008 und iis

nabend zusammen

habe das problem das ich es einfach nicht hin bekomme das der iis mit php auf die installierte mysql datenbank zugreifen kann
das die mysql datenbank läuft ist sicher da ich über cmd befehle ausführen kann .... aber defenetiv nicht über den webserver
in der php.ini habe ich bereits extension=php_mysql.dll rein genommen

hat jemand ne anleitung oder kann mir den fehler sagen den ich gemacht habe

gruss rexen96

Content-ID: 140258

Url: https://administrator.de/contentid/140258

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

matze2010
matze2010 09.04.2010 um 20:45:46 Uhr
Goto Top
Hallo rexen96,

was zeigt dir die Ausgabe von phpinfo()? Taucht mysql auf? Was ist mit mysqli?

Klappt es mit php-cli auf der Kommandozeile oder meinst du das mysql Konsolenprogramm?

Viel Erfolg gegen Schlacke!

Lg
Matze
reXen96
reXen96 09.04.2010 um 21:16:56 Uhr
Goto Top
bis ebend stand es nicht drin ... habe ne fremde php.ini installiert nun gib es so halb :D hatte nen fehler bekommen wenn ich nen mysql befehl ausführen wolte ... leider habe ich ihn nicht aufgeschrieben face-sad
aber nun das ich den fehler gehoft habe zu behoben bekomme ich jetzt

Service Unavailable


HTTP Error 503. The service is unavailable.


edit: nach nem server neustart geht es nun wieder das php .... aber nun steht mysql auch in der phpinfo ... aber dann kommt immer nocht


"Fatal error: Call to undefined function mysql_connect() in C:\inetpub\wwwroot\dbtest.php on line 7"

oder es kommt

Die Webseite kann nicht angezeigt werden.


daten aus der phpinfo

mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.45

Directive Local Value Master Value
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host localhost localhost
mysql.default_password no value no value
mysql.default_port 3306 3306
mysql.default_socket no value no value
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off


mysqli
MysqlI Support enabled
Client API library version 5.1.45
Client API header version 5.0.51a
MYSQLI_SOCKET /tmp/mysql.sock

Directive Local Value Master Value
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.reconnect Off Off

Mögliche Vorgehensweise:
Diagnose von Verbindungsproblemen

Weitere Informationen
matze2010
matze2010 11.04.2010 um 15:05:07 Uhr
Goto Top
Mir fällt gerade auf, bei mir heißt die Extension-Zeile

extension=php_mysql_libmysql.dll

wie sieht deine dbtest.php aus?

Lg
Matze
reXen96
reXen96 11.04.2010 um 18:49:34 Uhr
Goto Top
hallo matze2010

<?PHP
$Username = "root";  
$Password = "*********";  
$Database = "test";  
$Hostname = "localhost";  
$MySQLConnection = mysql_connect($Hostname, $Username, $Password)or die("Unable to connect to MySQL Database!!");  
?>

ist die dbtest.php

habe die libmysql.dll auch drinne ... bekomme jetzt immer den fehler 500 interner fehler ... woran liegt das bloss ich verzweifel

die 3 stehen in der php.ini

extension=php_mysql.dll
extension=php_mysqli.dll
extension=libmySQL.dll
matze2010
matze2010 11.04.2010 um 19:03:09 Uhr
Goto Top
Hmm,

hast du mal versucht, php-cli zu nutzen, um dbtest.php auszuführen? 500 Scheint ein Serverfehler zu sein.

php-cli ist ja die Kommandozeilenvariante von php (auch in dem Verzeichnis), ohne Server. Funktioniert dein Script damit?

Lg
Matze
reXen96
reXen96 11.04.2010 um 19:17:26 Uhr
Goto Top
wie kann ich das den mit php-cli das testen?
matze2010
matze2010 11.04.2010 um 19:22:36 Uhr
Goto Top
Hi,

Start - Ausführen -> "cmd"

Du gehst in den Ordner, in welchem php installiert ist.

"cd c:\Pfad\nach\php"

Dort ist entweder php.exe oder php-cli.exe

"php c:\Pfad\zur\dbtest.php"

und dann auf die Ausgabe achten, bzw.

print $MySQLConnection;

hinzufügen und die Ausgabe beachten.

Lg
Matze
reXen96
reXen96 12.04.2010 um 12:06:09 Uhr
Goto Top
da kommt nichts wenn ich "php.exe C:\inetpub\wwwroot\dbtest.php" eingeben

hehe hatte print $MySQLConnection; nicht drin

nun steht da
"Resource id #4
matze2010
matze2010 12.04.2010 um 12:43:09 Uhr
Goto Top
Hi,

dann läuft auf jeden Fall php und MySQL sowie der Verbindungsaufbau. Der Fehler wird also wohl irgendwo im IIS liegen.

Wenn du phpinfo() ausgeben lässt (einmal mit php.exe und einmal im IIS), stehen dann jeweils dieselben Pfade zur php.ini?

Lg
Matze
reXen96
reXen96 13.04.2010 um 12:22:44 Uhr
Goto Top
ja beides mal steht drin
C:\windows\php.ini

was nun habe ich vieleicht nen featcher beim iis vergessen??

nun habe ich noch ne neue fehlermeldung face-smile

"PHP has encountered an Access Violation at 0242AC6A"
matze2010
matze2010 13.04.2010 um 12:27:01 Uhr
Goto Top
Hallo,

das kann ich dir nicht sagen, was sagen die IIS Logfiles zu deinem internen Fehler (500)? Taucht dieser Fehler bei allen PHP Seiten auf, oder nur bei dieser (oder allen, welche Mysql-Verbindungen aufbauen)?

Lg
Matze
reXen96
reXen96 13.04.2010 um 12:27:59 Uhr
Goto Top
nur bei dennen mit mysql inhalt

nun habe ich noch ne neue fehlermeldung

"PHP has encountered an Access Violation at 0242AC6A"
matze2010
matze2010 13.04.2010 um 12:50:54 Uhr
Goto Top
Hallo rexen,

hast du die aktuellste Version von PHP? Zum jetzigen Zeitpunkt 5.3.2
Aktuelle MySQL-Version?

Hier:
http://www.faqts.com/knowledge_base/view.phtml/aid/2027

steht, dass dieser Fehler auftaucht, wenn PHP keine Schreibzugriffe auf gewünschte Ordner oder Dateien hat. Dies kann sein, da der IIS ja unter dem IIS Benutzer läuft, aber die Kommandozeilenversion (welche ja läuft) unter deinem angemeldeten Benutzer. Du solltest also zwinged prüfen, dass der IIS-Benutzer auf alle nötigen Ordner und Dateien (insb. die aus der php.ini, zugreifen darf).

Lg
Matze
reXen96
reXen96 13.04.2010 um 14:09:01 Uhr
Goto Top
habe nun dem iis user die rechte eines admins gegeben ... aber naja funktioniert nicht
matze2010
matze2010 13.04.2010 um 14:17:20 Uhr
Goto Top
Funktioniert nicht ist mal eine Aussage....
Nix über die PHP-Version....
Wie kann man dir helfen wenn du die Fragen nicht beantwortest?

Hast du die php.ini überprüft, ob es die Verzeichnisse alle auch gibt? Du schriebst oben, dass du die php.ini von "jemand anderem" hättest. Hat der vielleicht andere Pfade verwendet, um temporäre Dateien anzulegen?

Mehr Infos bitte.
Lg
Matze
reXen96
reXen96 13.04.2010 um 15:06:15 Uhr
Goto Top
axo ja sry ...

OS: Server 2008 Standart
MYSQL Vers.: mysql-5.1.36
PHP Vers.: php-5.2.10
IIS Version 7

um deine Frage wegen der Fremden php.ini ... die pfade habe ich alle geprüft und sind OK
matze2010
matze2010 13.04.2010 um 15:39:13 Uhr
Goto Top
Und aus welchem Grund benutzt du eine alte PHP Version?

Lg
Matze
reXen96
reXen96 13.04.2010 um 16:11:40 Uhr
Goto Top
weil ich dachte das es an php liegt face-smile
matze2010
matze2010 13.04.2010 um 17:09:01 Uhr
Goto Top
Möglicherweise liegt es an php, zeigt sich aber nur im Zusammenspiel mit dem IIS.

Kannst du mal in deine Kommandozeile gehen und folgendes eingeben

echo %PATH%

und die Ausgabe hier posten?
reXen96
reXen96 13.04.2010 um 18:11:19 Uhr
Goto Top
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\Norman\
Npm\Bin;C:\Program Files\MySQL\MySQL Server 5.1\bin

das kommt wenn ich in die cmd echo %PATH% eingebe


habe jetzt mal meine abfrage etwas erweitert

<?PHP
$Username = "root";  
$Password = "Hannover96";  
$Database = "ibr";  
$Hostname = "localhost";  
$MySQLConnection = mysql_connect($Hostname, $Username, $Password)or die("Unable to connect to MySQL Database!!");  
$MySQLSelectedDB = mysql_select_db($Database, $MySQLConnection)or die("Could not Set the Database!!");  
print $MySQLConnection;
echo mysql_error();
$MySQLRecordSet = mysql_query("SELECT * FROM pages");  
while ($MyRow = mysql_fetch_array($MySQLRecordSet, MYSQL_ASSOC))
{
print $MyRow['pageid'] . "  -  " . $MyRow['header'] ."<br>";  
}
mysql_close($MySQLConnection);
?>

jetzt kommt fast nur noch
"Resource id #1PHP has encountered an Access Violation at 0223AC6A"
im Browser
allerdings kommt in der cmd
"Resource id #41 - Startseite<br>2 - B³roprofil<br>3 - Kontakt<br>4 - Impressum<br>5 - Aktuelles<br>6 - Referenzen<br>"

also das was da auch kommen soll
matze2010
matze2010 13.04.2010 um 18:27:18 Uhr
Goto Top
Füge mal den PHP Pfad hinzu.

Hast du PHP nach der Installationsanleitung in der PHP Dokumentation installiert oder "frei Hand"?
http://www.php.net/manual/de/install.windows.iis7.php

Besorge bitte eine aktuelle PHP Version und installiere sie wie beschrieben als Fast-CGI.

Dann steht hier http://www.php.net/manual/de/install.windows.iis.php
"The correct required NTFS ACL's are:

- for the folder holding your PHP files:
[Read] IUSR_servername
[Read] IWAM_servername

-for the folder holding the PHP executables:
[Read] IUSR_servername"

Lg
Matze
matze2010
matze2010 13.04.2010 um 19:14:45 Uhr
Goto Top
Hey rexen,

lies mal hier:
http://stackoverflow.com/questions/154290/php-access-violation

Lies ihn bitte komplett durch!

(Offensichtlich ein ISAPI Problem (von php)! Also dringend: Neueste Version! Wenn dann noch Fehler auftretenface-smile

Da steht unter anderem:
"So far the only suggestion I've found is to try FastCGI instead of ISAPI."
"moving libmysql.dll to windows\system32 worked! thanks!!!"
"moving the libmysql.dll that came with php to windows\system32 worked for me too! Thanks!"

Also 3 Herangehensweisen und zwei verschiedene Lösungen, die helfen könnten.

  1. Benutzte Bibliotheken alle auskommentieren und nach und nach die benötigten wieder reinnehmen.
  2. Fast-CGI statt ISAPI (ist langsamer)
  3. libmysql __verschieben__, nicht kopieren!

<edit>
Wenn "Hannover96" dein Standardpasswort ist, dann solltest du es dringend ändern face-smile
</edit>

Lg
Matze
reXen96
reXen96 16.04.2010 um 17:54:27 Uhr
Goto Top
so habe es nun über die php-cgi gemacht face-sad naja hauptsache es geht :D also dank euch und vor allem matze2010