Dzień dobry,
Mam błąd: "Cannot redeclare openDatabase()". Mój skrypt zaczyna się tak:
<?php
require_once 'include/common.inc.php';
require_once 'include/functions.inc.php';
require_once 'include/database.inc.php';
require_once 'include/announcement.inc.php';
require_once 'include/Captcha.php';
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
error(ERRMSG_POST_ALLOWED_ONLY);
}
sessionBegin();
savePostInSession();
if (!openDatabase()) {
error(ERRMSG_DATABASE_ACCESS_PROBLEM);
}
gdzie database.inc.php zawiera pojedynczą definicję funkcji openDatabase():
<?php
require_once 'common.inc.php';
if (!isset($db)) {
$db = null;
}
$inTransaction = false;
$regions = array();
$estateTypes = array();
$ownership = array();
$standards = array();
$furnitureTypes = array();
$offerTypes = array();
$currencies = array();
$agencies = array();
$priceFor = array();
$units = array('M2' => 'm<sup>2<\/sup>', 'HA' => 'ha (hektarów)');
$vulgar = array();
function openDatabase() {
global $db;
try {
$db = new PDO('mysql:host=' . MYSQL_SERVER . ';dbname=' .
MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD);
$db->exec('SET NAMES latin2');
$db->exec('SET CHARACTER SET latin2 COLLATE latin2_general_ci');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
register_shutdown_function('closeDatabase');
} catch (PDOException $e) {
return false;
}
return true;
}
Pozostałe inkludowane pliki nie zawierają funkcji openDatabase().
Polecenie:
robert@pecet:~/public_html$ find . -exec grep -H -n 'function openDatabase' {} \;
zwraca:
./include/database.inc.php:25:function openDatabase() {
więc w całej aplikacji jest tylko jedno wystąpienie definicji openDatabase().