これは単純にしておきます。session_start()
PHPスクリプトの上部で呼び出す理由は、次の出力を下部に表示することです。
Fatal error: Exception thrown without a stack frame in Unknown on line 0
どうしたの?
編集:私が問題をさらに特定したので、いくつかの詳細。
index.php
(抜粋):
<?php
session_start();
require_once('inc/database.php');
require_once('inc/gallery.php');
...
database.php
:
<?php
try {
$dsn = 'mysql:host=localhost;dbname=tees_db';
$pdo = new PDO($dsn, '[username removed]', '[password removed]');
}
catch (PDOException $e) {
header('HTTP/1.1 503 Service Unavailable');
die('There was an error connecting to the database.');
}
gallery.php
(抜粋):
<?php
class Gallery {
private $pdo;
public function __construct() {
global $args, $pdo, $request;
$this->pdo = $pdo;
}
...
}
$gallery = new Gallery();
Gallery
グローバル$pdo
変数をクラスプロパティとして割り当てようとすると、クラスで問題が発生します。$pdo
単なるPDOインスタンスであるのに、なぜこれが致命的なエラーを引き起こすのでしょうか?
編集2:ブラウザを閉じて再起動(セッションを強制終了)するとエラーが抑制されることがわかりました。inc/confirm.php
エラーは、が呼び出されたときにのみトリガーされます。
inc/confirm.php
18歳以上の確認に使用されるスクリプトです。内容は最小限です:
session_start();
if (isset($_GET['mod'])) {
$mod = $_GET['mod'];
$_SESSION[$mod] = '1';
}
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
ご覧のとおり、キーを$_SESSION
配列に保存して元のページにリダイレクトするだけです。例外やクラスのコンストラクターについては何もありません。