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

今日、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 までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。