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

致命的なエラー: session_start(): ストレージ m_PHP 教程の初期化に失敗しました

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

この記事では、致命的エラー: session_start(): ストレージ モジュールの初期化に失敗しました: ファイルの問題の解決策を紹介します。

元の解決策: 致命的なエラー: 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(): セーフ モード制限が適用されています。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 を使用してファイル/ディレクトリの所有者を変更します

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

以下はPuyu 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/など
 ; - アクティブなセッション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"

これは 1 台の VPS 上に配置されているため、上には複数の項目があり、1 つの項目が璞玉で打たれたため、この項目を公開します
目的認証機能はOKです。 以下は次の通りです:

代码如下复制幣

$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做了下修正:

代码如下

この問題を解決するために session_start() の前に session_save_path(“/data/www/session”); を追加しました。
@ini_set(‘session.save_path’, ”/data/www/session”) を渡すことを忘れないでください。
この問題に数時間悩まされましたが、ようやく解決したので、今後役立つかもしれないので記録しておきます。
お役に立てましたら、メッセージを残してください。ご意見がございましたら、ぜひ共有してください。

复制幣
if (! isset($_COOKIE[$session_name])) {

 // セッションの最初の開始時にエラーをチェックします
 // フェーセッションディレクトリにアクセスできません - セッションファイルが作成されていません
 $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");
 セッション開始();
 }

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632071.html技術記事この記事では、致命的エラー: session_start(): ストレージ モジュールの初期化に失敗しました: ファイルの問題の解決策を紹介します。 元の解決策: 致命的なエラー: session_start(): 失敗しました...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか? win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか? Feb 09, 2024 pm 12:54 PM

win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか?ソフトウェアまたはゲームの実行中に致命的なエラー メッセージが表示された場合はどうすればよいですか?このサイトでは、Win10でゲームを開くときに致命的なエラーが発生した場合の対処方法をユーザーに丁寧に紹介します。 win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか?方法 1: ファイルの破損やクラック パッチの使用など、ゲーム クライアントに問題があり、致命的なエラーが発生する場合は、ゲームを再ダウンロードできます。方法 2: コンピューターのメモリが小さすぎると、致命的なエラーが発生する可能性があります。物理メモリが十分な場合は、システムの仮想メモリを設定してみてください。

PHP 致命的エラーの解決策: 未定義メソッド PDO::prepare() の呼び出し PHP 致命的エラーの解決策: 未定義メソッド PDO::prepare() の呼び出し Jun 22, 2023 pm 06:40 PM

PHP は、長い間使用されている人気のある Web 開発言語です。 PHP に統合された PDO (PHP Data Object) クラスは、Web アプリケーションの開発中にデータベースと対話する一般的な方法です。ただし、一部の PHP 開発者がよく遭遇する問題は、PDO クラスを使用してデータベースと対話するときに、次のようなエラーが表示されることです。

C++ コードの「エラー: 不完全な型は許可されません」の問題を解決する C++ コードの「エラー: 不完全な型は許可されません」の問題を解決する Aug 26, 2023 pm 08:54 PM

C++ コードの「error:incompletetypeisnotallowed」問題を解決します。C++ プログラミング プロセス中に、コンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:incompletetypeisnotallowed」です。このエラーは通常、不完全な型を操作することによって発生します。この記事では、このエラーの原因を説明し、いくつかの解決策を提供します。まず、私は

Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Jun 24, 2023 pm 05:33 PM

Vue アプリケーションで axios を使用するのは非常に一般的です。axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP クライアントです。開発プロセス中に、「Uncaught(inpromise)Error: Requestfailedwithstatuscode500」というエラー メッセージが表示されることがありますが、開発者にとって、このエラー メッセージは理解および解決が難しい場合があります。この記事ではこれについて説明します

ファイナルファンタジー7の致命的なエラーを解決する方法 ファイナルファンタジー7の致命的なエラーを解決する方法 Mar 07, 2024 pm 04:40 PM

ファイナルファンタジー 7 をプレイしていると、多くのプレイヤーが致命的なエラーの問題に遭遇し、その解決方法がわかりません。通常、メモリが読み取れないという問題が発生します。この問題を解決するには、ゲームを再インストールすることをお勧めします。ファイナルファンタジー 7 の致命的エラーの解決方法 1. ゲームを再インストールします ファイルの破損、不完全さ、一部のクラック パッチの使用などのゲーム クライアントの問題は致命的なエラーにつながる可能性があるため、ゲームを再インストールすることをお勧めします。 2. すべてのファイルの読み取り専用プロパティを削除します。一部のファイル プロパティは読み取り専用であってはなりませんが、読み取り専用に設定されています。すべてのファイルの読み取り専用プロパティを削除するだけです。たとえば、ゲームがプレイできない場合は、ゲーム上で右クリックしてフォルダをインストールし、読み取り専用属性を解除してください。 3. 仮想メモリの設定は、メモリが少なすぎることが原因である可能性があります。物理メモリが十分な場合は、

C++ コードの「エラー: 'datatype' の前に初期化子が必要です」問題を解決する C++ コードの「エラー: 'datatype' の前に初期化子が必要です」問題を解決する Aug 25, 2023 pm 01:24 PM

C++ コードの「error:expectedinitializerbefore'datatype'」問題を解決します。C++ プログラミングでは、コードを作成するときにコンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:expectedinitializerbefore'datatype'」です。このエラーは通常、変数宣言または関数定義で発生し、プログラムが正しくコンパイルされなかったり、

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

See all articles