ホームページ バックエンド開発 PHPチュートリアル php 致命的なエラー: session_start(): stora_PHP教程の初期化に失敗しました

php 致命的なエラー: session_start(): stora_PHP教程の初期化に失敗しました

Jul 13, 2016 am 10:57 AM
error fatal php session start storage

今日、PHP でセッションを呼び出すと、致命的なエラー: session_start(): ストレージ モジュールの初期化に失敗しました: ファイル(session.inc.php 83 行目) が表示されました。この問題の対処方法を説明します。

元の解決策: 致命的なエラー: session_start(): ストレージ モジュールの初期化に失敗しました: ファイルの問題

以前コンパイルしてインストールした LNMP 環境 + phpmyamdin4.02 バージョンで、今日突然この問題が発生しました:
致命的なエラー: session_start(): ストレージ モジュールの初期化に失敗しました: /data/www/phpmyadmin/libraries/session.inc.php の 83 行目のファイル (パス: )
一般的な意味は、セッションの初期化時にストレージ パスが間違っているということです。最初の反応は、php.ini の設定ファイルを確認することです:

コードは次のとおりです コードをコピー

session.save_path = "/tmp"

デフォルトでは、その前にセミコロンがあります。これは、以前に設定したときにすでに有効になっていることを意味します。では、なぜ依然としてエラーが報告されるのでしょうか? , そこでインターネットでいくつかの情報を探しましたが、どれも同じだと感じました:
1. error.log (Apache2.2logs) ファイルをチェックして、エラー レポートがあるかどうかを確認します。見つかりません。

2. php.ini の session.save_handler の値が files であるかどうかを確認し、そうでない場合は files に変更します

3. php.ini ファイル内で session.save_path がコメント化されているかどうかを確認し、コメント化されている場合は、先頭の「;」を削除します。

4. save_path の後のパスを「D:phptemp」などの既存のパスに変更します。

5. 一時フォルダーの属性が読み取り可能か書き込み可能かを確認します。

6. APACHE サーバーを再起動します。わかりました

転載するときにその仲間たちが自分で試したかどうかは知りません(ここでスプレーしますが、私はそれが一番嫌いなので、自分で試すこともせずに広めただけです。私は責任を負いません)全部!)
上記のプロセスによると、トラブルシューティングの結果、まったく解決策がないことが判明しましたが、Puyu のサーバーは Apache ではなく nginx でした。
次に、スクリプト test.php を書きました:

$r = var_dump($r); 印刷結果は次のようになります: 警告: session_start(): SAFE MODE 制限が適用されています。uid が 501 のスクリプトは、/data/www/test.php の 3 行目で uid 0 が所有する /tmp にアクセスできません。 致命的なエラー: session_start(): 失敗しました。ストレージモジュールを初期化します: /data/www/test.php の 3 行目のファイル (パス: )

これは、php5 のセーフ モードにバグがあることを意味します。セッションのデフォルトの save_path はシステムの一時ディレクトリであり、権限の確認が必要です。そして、このスクリプトは /tmp 所有者の uid が 0 では実行できません。uid は 501 であり、www ユーザー グループの許可でもあります
この問題には 2 つの解決策があります:
1.セーフモードをオフにしてください。
2.コマンドラインで chown を使用してファイル/ディレクトリの所有者を変更します

もちろん、どちらの方法でもサーバー権限が必要です。

以下は璞玉php.iniの構成ファイル:
[セッション]
 ;データの保存/取得に使用されるハンドラー。
 ; http://php.net/session.save-handler
session.save_handler = ファイル; save_handler に渡される引数。  ファイルの場合はパスです
 ;データファイルが保存される場所。注: Windows ユーザーはこれを変更する必要があります
 ; PHPのセッション関数を使用するための変数です。
 ;
 ;パスは次のように定義できます:
 ;
 ;     session.save_path = "N;/パス"
 ;
 ;ここで、N は整数です。  すべてのセッションファイルを
に保存する代わりに  ; /path、これは N レベルの深さのサブディレクトリを使用します、そして
 ;セッション データをそれらのディレクトリに保存します。  こんな方に便利です
 ;または、お使いの OS で 1 つのディレクトリに多数のファイルがあることに問題があり、
 ;多くのセッションを処理するサーバーのためのより効率的なレイアウト。
 ;
 ;注 1: PHP はこのディレクトリ構造を自動的に作成しません。
 ;         その目的のために、ext/session ディレクトリ内のスクリプトを使用できます。
 ;注 2: 必要に応じて、以下のガベージ コレクションに関するセクションを参照してください
 ;         セッションストレージにはサブディレクトリを使用します
 ;
 ;ファイル ストレージ モジュールは、デフォルトでモード 600 を使用してファイルを作成します。
 ;
を使用して変更できます  ;
 ;     session.save_path = "N;MODE;/パス"
 ;
 ;ここで、MODE はモードの 8 進数表現です。これに注意してください
 ;プロセスの umask は上書きされません。
 ; http://php.net/session.save-path
 session.save_path = "/tmp"
; Cookieを使用するかどうか。
 ; http://php.net/session.use-cookies
 session.use_cookies = 1
; http://php.net/session.cookie-secure
 ;session.cookie_secure =
;このオプションにより、PHP は保存と維持のために Cookie を取得して使用するようになります
 ;セッションID。戦闘に非常に役立つため、この作戦を推奨します
 ;独自のセッション ID を指定および管理しない場合のセッション ハイジャック。それは
 ;セッションハイジャック防御のすべてが終わりではありませんが、良いスタートです
 ; http://php.net/session.use-only-cookies
 session.use_only_cookies = 1
;セッションの名前 (Cookie 名として使用)。
 ; http://php.net/session.name
 session.name = PHPSESSID
;リクエストの起動時にセッションを初期化します。
 ; http://php.net/session.auto-start
 session.auto_start = 0
; Cookie の存続期間 (秒単位)、または 0 の場合はブラウザーが再起動されるまでの存続期間。
 ; http://php.net/session.cookie-lifetime
 session.cookie_lifetime = 0
; Cookie が有効なパス。
 ; http://php.net/session.cookie-path
 session.cookie_path = /
; Cookie が有効なドメイン。
 ; http://php.net/session.cookie-domain
 session.cookie_domain =
; httpOnly フラグを Cookie に追加するかどうか。これにより、JavaScript などのブラウザー スクリプト言語からアクセスできなくなります。
 ; http://php.net/session.cookie-httponly
 session.cookie_httponly =
;データをシリアル化するために使用されるハンドラー。  php は PHP の標準シリアライザーです
 ; http://php.net/session.serialize-handler
 session.serialize_handler = php
; 「ガベージコレクション」プロセスが開始される確率を定義します
 ;セッションの初期化ごとに。確率は
を使用して計算されます  ; gc_probability/gc_divisor。ここで、session.gc_probability は分子です
 ; gc_divisor は方程式の分母です。この値を 1 に設定します
 ; session.gc_divisor の値が 100 の場合、確率は約 1% です
 ; gc はあらゆるリクエストで実行されます。
 ;デフォルト値: 1
 ;開発値: 1
 ;生産値: 1
 ; http://php.net/session.gc-probability
 session.gc_probability = 1
; 「ガベージ コレクション」プロセスが毎回開始される確率を定義します
 ;セッションの初期化。確率は次の式を使用して計算されます:
 ; gc_probability/gc_divisor。ここで、 session.gc_probability は分子であり、
 ; session.gc_divisor は方程式の分母です。この値を 1 に設定します
 ; session.gc_divisor の値が 100 の場合、確率は約 1% です
 ; gc はあらゆるリクエストに対して実行されます。この値を 1000 に増やすと、次のようになります
 ;与えられたリクエストに対して gc が実行される確率は 0.1% です。大容量実稼働サーバーの場合、
 ;これはより効率的なアプローチです。
 ;デフォルト値: 100
 ;開発値: 1000
 ;生産価値: 1000
 ; http://php.net/session.gc-divisor
 session.gc_divisor = 1000
;この秒数が経過すると、保存されたデータは「ゴミ」とみなされ、
 ;ガベージ コレクション プロセスによってクリーンアップされます。
 ; http://php.net/session.gc-maxlifetime
 session.gc_maxlifetime = 1440
;注意: セッションファイルの保存にサブディレクトリオプションを使用している場合
 ;       (上記の session.save_path を参照)、ガベージ コレクションは*行われません*
 ;       自動的に起こります。  ゴミは自分で出す必要があります
 ;       シェル スクリプト、cron エントリ、またはその他の方法を介して収集します。
 ;       たとえば、次のスクリプトは
と同等です。  ;       session.gc_maxlifetime を 1440 に設定します (1440 秒 = 24 分):
 ;          /path/to/sessions -cmin +24 を見つけます | xargs rm
; PHP 4.2 以前には、次のことを可能にする文書化されていない機能/バグがあります
 ; register_globals
の場合でも、グローバル スコープでセッション変数を初期化します。  ;無効になっています。  PHP 4.3 以降では、この機能が使用されている場合に警告が表示されます。
 ;機能と警告を個別に無効にすることができます。このとき、
 ;この警告は、bug_compat_42 が有効になっている場合にのみ表示されます。この機能
 ;正しく処理しないと、重大なセキュリティ上の問題が発生します。それは
 ;運用サーバーではこの機能を使用しないことをお勧めします。でもあなた
 ;開発サーバーでこれを有効にし、警告も有効にする必要があります。あなたなら
 ;開発サーバーではこの機能を有効にしないでください。有効になっても警告は表示されません
 ;使用されており、これによって発生するデバッグ エラーを追跡するのは困難な場合があります。
 ;デフォルト値: オン
 ;開発値: オン
 ;生産価値: オフ
 ; http://php.net/session.bug-compat-42
 session.bug_compat_42 = オフ
;この設定は、
を初期化するときに PHP によって警告されるかどうかを制御します。  ;セッション値をグローバル空間にコピーします。 session.bug_compat_42 を事前に有効にする必要があります
 ;これらの警告は PHP によって発行できます。詳細については、上記のディレクティブを参照してください。
 ;デフォルト値: オン
 ;開発値: オン
 ;生産価値: オフ
 ; http://php.net/session.bug-compat-warn
 session.bug_compat_warn = オフ
; HTTP リファラーをチェックして、ID を含む外部に保存された URL を無効にします。
 ;セッションが成立するには、HTTP_REFERER にこの部分文字列が含まれている必要があります
 ;有効とみなされます。
 ; http://php.net/session.referer-check
 session.referer_check =
;ファイルから読み取るバイト数
 ; http://php.net/session.entropy-length
 session.entropy_length = 0
;セッションIDを作成するためにここで指定します。
 ; http://php.net/session.entropy-file
 ; /dev/urandom がないシステムでは /dev/arandom を使用できます
 ; Windows では、entropy_length 設定を設定すると、
 ; Windows ランダム ソース (CryptoAPI を使用)
 ;session.entropy_file = /dev/urandom
; HTTP キャッシュの側面を決定するには、{nocache,private,public,} に設定します
 ;または、アンチキャッシング ヘッダーの送信を避けるために、これを空のままにしておきます。
 ; http://php.net/session.cache-limiter
 session.cache_limiter = キャッシュなし
;ドキュメントは n 分後に期限切れになります。
 ; http://php.net/session.cache-expire
 session.cache_expire = 180
; trans SID サポートはデフォルトでは無効になっています。
 ; trans sid を使用すると、ユーザーのセキュリティが危険にさらされる可能性があります。
 ;このオプションは注意して使用してください。
 ; - ユーザーはアクティブなセッション ID を含む URL を送信できます
 ;   経由で他の人に。メール/IRC/etc.
 ; - アクティブなセッションIDを含むURLが保存される可能性があります
 ;   公的にアクセス可能なコンピューター内。
 ; - ユーザーは同じセッション ID を使用してサイトにアクセスできます
 ;   ブラウザの履歴やブックマークに保存されている URL を常に使用します。
 ; http://php.net/session.use-trans-sid
 session.use_trans_sid = 0
;セッション ID の生成に使用するハッシュ関数を選択します。
 ;可能な値
 ;   0 (MD5 128 ビット)
 ;   1 (SHA-1 160 ビット)
 ;このオプションは、
でサポートされているハッシュ関数の名前に設定することもできます。 ;ハッシュ拡張子。利用可能なハッシュのリストは hash_algos() によって返されます
 ;機能
 ; http://php.net/session.hash-function
 session.hash_function = 0
;変換時に各文字に格納されるビット数を定義します
 ;バイナリ ハッシュ データを読み取り可能なものに変換します。
 ;可能な値:
 ;   4 (4 ビット: 0 ~ 9、a ~ f)
 ;   5 (5 ビット: 0-9、a-v)
 ;   6 (6 ビット: 0 ~ 9、a ~ z、A ~ Z、「-」、「,」)
 ;デフォルト値: 4
 ;開発値: 5
 ;生産価値: 5
 ; http://php.net/session.hash-bits-per-character
 session.hash_bits_per_character = 5
; URL リライターは、定義された HTML タグのセットで URL を検索します。
 ;フォーム/フィールドセットは特別です。ここにそれらを含めると、リライターは
 ;非表示の を追加します。それ以外の場合は追加される情報を含むフィールド
 ; URLに。  XHTML に準拠したい場合は、フォームのエントリを削除してください。
 ;たとえ値が後に続かなくても、すべての有効なエントリには「=」が必要であることに注意してください。
 ;デフォルト値: "a=href,area=href,frame=src,form=,fieldset="
 ;開発値: "a=href,area=href,frame=src,input=src,form=fakeentry"
 ;プロダクション値: "a=href,area=href,frame=src,input=src,form=fakeentry"
 ; http://php.net/url-rewriter.tags
 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"故にこれは一台VPS上面に配置されており、上面には複数の项目があるため、璞玉打开一项目、発行されていますこの目的のテストコード機能は問題ありません。 以下は次の通りです:

代码如下复制幣
$sessSavePath = "/data/sessions/";

 // セッション保存経路
 if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }
 if(!empty($cfg_domain_cookie)) session_set_cookie_params(0,'/',$cfg_domain_cookie);

前述のこのコードは、session_start() の初期化の前にセッション会議が存在するかどうかを判断するためのファイルです。 これより、phpmyadmin エリアに保存されている文章/phpmyadmin/libraries/session.inc.php做了下修正:

代码如下if (! isset($_COOKIE[$session_name])) {  // セッションの最初の開始時にエラーをチェックします 在 session_start();  前に追加しました session_save_path(“/data/www/session”); この問題は解決されました。
复制幣
 // フェーセッションディレクトリにアクセスできません - セッションファイルが作成されていません
 $orig_error_count = $GLOBALS['error_handler']->countErrors();
 //session_save_path('./tmp');
 session_save_path("/data/www/session");
 $r = セッション開始();
 if ($r !== true
 || $orig_error_count != $GLOBALS['error_handler']->countErrors()
 ) {
 setcookie($セッション名, '', 1);
 /*
 * セッションの初期化は言語を選択する前に行われるため、
 ※ここでは翻訳を使用できません。
 */
 PMA_fatalError('エラーなしでセッションを開始できません。PHP や Web サーバーのログ ファイルに示されたエラーを確認し、PHP インストールを適切に設定してください。また、ブラウザで Cookie が有効になっていることも確認してください。');
 }
 unset($orig_error_count);
 } その他 {
 session_save_path("/data/www/session");
 セッション開始();
 }


切记通过@ini_set(‘session.save_path’, ”/data/www/session”);無效!

この問題は私たちが少しの間解決したので、翌日にこの会議が役立つと報告しました。 助けがある場合は、発言を残します。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632062.html技術記事今日、PHP でセッションを呼び出すと、致命的なエラーが表示されます: session_start(): ストレージ モジュールの初期化に失敗しました: ファイル(session.inc.php の 83 行目) この問題を皆さんと共有しましょう...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles