PDO, server crash
Ik had een membersysteem ergens gevonden, maar er zit een fout in. Het gaat mis met het stukje PDO, waar ik weinig tot geen verstand van heb. Vandaar dit topic.
Hier gaat het fout:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$db = array(
'connection_string' => 'mysql:host=localhost;port=3306;dbname=membersystem;',
'user' => 'root',
'pass' => '*****
);
?>
$db = array(
'connection_string' => 'mysql:host=localhost;port=3306;dbname=membersystem;',
'user' => 'root',
'pass' => '*****
);
?>
Want namelijk als ik dan de pagina open, vliegt mijn lokale server er uit.
Als ik het laatste stukje weghaal: dbname=membersystem; blijft de server er wel in, alleen is er dan natuurlijk geen db geselecteerd, dus dat schiet ook niet echt op.
Roept u maar, als er meer code moet komen, ik heb geen idee...
Je maakt enkel een array aan..
Daar kan je server helemaal niet van crashen.
Enigste opmerking is bij pass, daar staat een string niet tussen quotes.
Als ik dat er weg haal, gaat het wel goed... Waar kan dat anders in zitten?
Dit is de rest van die code...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/**
* Start session
*/
if( !isset($_SESSION) )
{
session_start();
}
/**
* Database info
* @see http://www.php.net/PDO
mysql:host=localhost;port=3306;dbname=membersystem;
*/
$db = array(
'connection_string' => 'mysql:host=localhost;port=3306;dbname=membersystem;',
'user' => 'root',
'pass' => '0611491115'
);
/**
* Used for cookie setting
*/
$domain_name = $_SERVER['SERVER_NAME'];
$script_path = str_replace($_SERVER['DOCUMENT_ROOT'], '', substr(dirname(__FILE__), 0, strrpos(dirname(__FILE__), DIRECTORY_SEPARATOR)));
if($script_path[0] != DIRECTORY_SEPARATOR)
{
$script_path = DIRECTORY_SEPARATOR.$script_path;
}
if(substr($script_path, -1) != DIRECTORY_SEPARATOR)
{
$script_path .= DIRECTORY_SEPARATOR;
}
?>
/**
* Start session
*/
if( !isset($_SESSION) )
{
session_start();
}
/**
* Database info
* @see http://www.php.net/PDO
mysql:host=localhost;port=3306;dbname=membersystem;
*/
$db = array(
'connection_string' => 'mysql:host=localhost;port=3306;dbname=membersystem;',
'user' => 'root',
'pass' => '0611491115'
);
/**
* Used for cookie setting
*/
$domain_name = $_SERVER['SERVER_NAME'];
$script_path = str_replace($_SERVER['DOCUMENT_ROOT'], '', substr(dirname(__FILE__), 0, strrpos(dirname(__FILE__), DIRECTORY_SEPARATOR)));
if($script_path[0] != DIRECTORY_SEPARATOR)
{
$script_path = DIRECTORY_SEPARATOR.$script_path;
}
if(substr($script_path, -1) != DIRECTORY_SEPARATOR)
{
$script_path .= DIRECTORY_SEPARATOR;
}
?>
Wat bedoel je trouwens met "vliegt mijn lokale server eruit"? Ik heb nog nooit een vliegende server gezien. Misschien mis ik wel iets.
En je vermeldt in je titel PDO. Ik heb je nog nergens PDO zien gebruiken.
Hier de code van het bestand 'start.php', waar de databaseconnectie wordt gemaakt. En met dat vliegen bedoel ik dat Apache er mee stopt, werkt niet meer, breekt af, alles behalve gewoon zijn werk.
Volgens mij gaat het mis op regel 39.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
// ------------------------------------------------------------------------
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
function __autoload($classname)
{
if(file_exists('classes/'.strtolower($classname).'.class.php'))
{
require_once 'classes/'.strtolower($classname).'.class.php';
}
}
/**
* Include classes
*/
require_once 'inc/config.inc.php';
require_once 'classes/exceptions.php';
require_once 'classes/template_lite/class.template.php';
require_once 'classes/template_lite/class.compiler.php';
require_once 'classes/template_lite/class.config.php';
// Create Registry class
$registry = Registry::GetInstance();
$registry -> script_path = $script_path;
$registry -> domain_name = $domain_name;
// Set timezone
date_default_timezone_set('Europe/Amsterdam');
/**
* PDO connection to database (here: mysql)
*/
try
{
$registry -> connection = new PDO($db['connection_string'], $db['user'], $db['pass']);
$registry -> connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// The MySQL Driver for PDO is far from perfect
if($registry -> connection -> getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
{
$registry -> connection -> setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$registry -> connection -> setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
}
/**
* Start the user session
*/
$manager = new SessionManager($script_path, $domain_name);
$registry -> session = $manager -> startSession();
}
catch(PDOException $e)
{
die('Could not connect to database: '. $e->getMessage());
}
catch(Exception $e)
{
die('Errors creating session:'. $e->getMessage());
}
// Init template
$registry -> template = new Template_Lite();
$registry -> template -> config_class = 'TplConfig';
$registry -> template -> template_dir = 'template';
$session_data = $registry -> session -> session_data;
$session_data['user'] = $registry -> session -> user -> userdata;
$registry -> template -> assign('session', $session_data);
?>
// ------------------------------------------------------------------------
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
function __autoload($classname)
{
if(file_exists('classes/'.strtolower($classname).'.class.php'))
{
require_once 'classes/'.strtolower($classname).'.class.php';
}
}
/**
* Include classes
*/
require_once 'inc/config.inc.php';
require_once 'classes/exceptions.php';
require_once 'classes/template_lite/class.template.php';
require_once 'classes/template_lite/class.compiler.php';
require_once 'classes/template_lite/class.config.php';
// Create Registry class
$registry = Registry::GetInstance();
$registry -> script_path = $script_path;
$registry -> domain_name = $domain_name;
// Set timezone
date_default_timezone_set('Europe/Amsterdam');
/**
* PDO connection to database (here: mysql)
*/
try
{
$registry -> connection = new PDO($db['connection_string'], $db['user'], $db['pass']);
$registry -> connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// The MySQL Driver for PDO is far from perfect
if($registry -> connection -> getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
{
$registry -> connection -> setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$registry -> connection -> setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
}
/**
* Start the user session
*/
$manager = new SessionManager($script_path, $domain_name);
$registry -> session = $manager -> startSession();
}
catch(PDOException $e)
{
die('Could not connect to database: '. $e->getMessage());
}
catch(Exception $e)
{
die('Errors creating session:'. $e->getMessage());
}
// Init template
$registry -> template = new Template_Lite();
$registry -> template -> config_class = 'TplConfig';
$registry -> template -> template_dir = 'template';
$session_data = $registry -> session -> session_data;
$session_data['user'] = $registry -> session -> user -> userdata;
$registry -> template -> assign('session', $session_data);
?>
Gewijzigd op 01/01/1970 01:00:00 door mark moes
EDIT
Ik heb de tut gevolgd, en de bestanden gewijzigd, maar t mag geen verschil maken. Heb je nog meer nieuws m.b.t. xampp, pdo en vista? :P
Gewijzigd op 01/01/1970 01:00:00 door mark moes
Het is nog niet op gelost. Heeft iemand hier verder nog ervaring mee? Xampp en PDO?
ik denk dat je iets veranderd hebt wat je niet mocht veranderen.. Als ik het goed heb is dat het oop membersysteem van phpfreakz?
Gewijzigd op 01/01/1970 01:00:00 door Daniel H
Zijn er verder nog problemen bekend van xampp vs. vista?
Wamp werkt iig correct icm Vista/ 7
apache//php error logs gecontroleerd? :P
Marcel schreef op 23.05.2009 21:31:
Wamp werkt iig correct icm Vista/ 7
xampp werkt op windows 7 en vista ook prima
Ok. Heb verder nooit Xampp gebruikt dus. Waar staat die X en die laatste P voor dan? Bij Wamp is het: Windows Apache MySQL, PHP toch?
XAMPP bestaat al sinds 2002 komt voort uit het vroegere WAMPP (voor Windows) en LAMPP (voor Linux). XAMPP is inmiddels beschikbaar voor Linux, Windows, MacOS X en Solaris. Om deze reden is ook de naam gewijzigd van WAMPP/LAMPP naar XAMPP om de uitwisselbaarheid tussen de diverse platformen te benadrukken.
Bron: http://nl.wikipedia.org/wiki/XAMPP
Ah oke;)
welke versie heeft hier geen last van dan? volgens mij heb ik de nieuwste..
Maar ik zal m een dezer dagen even opnieuw installeren. Wie weet gaat het dan weer beter...
Dus kijk in je error log, voordat je een configuratie van een server gaat aanpassen. Tis een beetje omgekeerde wereld, je config tunen om je script werkend te krijgen.
Ik open de eerder geposte index, dat is de eerste regel in de log, dan start ik de server handmatig op via Services van windows, en dan volgen dus de rest van de regels...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Tue May 26 17:42:40 2009] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 26 17:46:21 2009] [warn] pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue May 26 17:46:21 2009] [notice] Digest: generating secret for digest authentication ...
[Tue May 26 17:46:21 2009] [notice] Digest: done
[Tue May 26 17:46:23 2009] [notice] Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8 configured -- resuming normal operations
[Tue May 26 17:46:23 2009] [notice] Server built: Dec 10 2008 00:10:06
[Tue May 26 17:46:23 2009] [notice] Parent: Created child process 6244
[Tue May 26 17:46:24 2009] [notice] Digest: generating secret for digest authentication ...
[Tue May 26 17:46:24 2009] [notice] Digest: done
[Tue May 26 17:46:25 2009] [notice] Child 6244: Child process is running
[Tue May 26 17:46:25 2009] [notice] Child 6244: Acquired the start mutex.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting 250 worker threads.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting thread to listen on port 443.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting thread to listen on port 80.
[Tue May 26 17:46:37 2009] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 26 17:46:21 2009] [warn] pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue May 26 17:46:21 2009] [notice] Digest: generating secret for digest authentication ...
[Tue May 26 17:46:21 2009] [notice] Digest: done
[Tue May 26 17:46:23 2009] [notice] Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8 configured -- resuming normal operations
[Tue May 26 17:46:23 2009] [notice] Server built: Dec 10 2008 00:10:06
[Tue May 26 17:46:23 2009] [notice] Parent: Created child process 6244
[Tue May 26 17:46:24 2009] [notice] Digest: generating secret for digest authentication ...
[Tue May 26 17:46:24 2009] [notice] Digest: done
[Tue May 26 17:46:25 2009] [notice] Child 6244: Child process is running
[Tue May 26 17:46:25 2009] [notice] Child 6244: Acquired the start mutex.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting 250 worker threads.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting thread to listen on port 443.
[Tue May 26 17:46:25 2009] [notice] Child 6244: Starting thread to listen on port 80.
[Tue May 26 17:46:37 2009] [notice] Parent: child process exited with status 255 -- Restarting.
Ik kan er niet uit wijs worden...
Er moet ook nog een error.log zijn daar staat in wat er fout ging. En anders een test scriptje maken, met slecht de opbouw van je PDO object, kijken wat dat doet.