首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP Session 常見問題與解決方案總整理

     編輯:PHP 相關知識

Session 是 PHP 開發中維持狀態的核心機制,但新手常遇到路徑設定、Header 錯誤、檔案上傳等問題。本文整理最常見的三大議題並提供解決方案。

1. Session 儲存路徑設定

預設儲存路徑可能無寫入權限,導致 Session 無法建立。請在 php.ini 中指定可寫入目錄:

session.save_path = "D:/developer/php/temp"  ; Windows
session.save_path = "/tmp"                    ; Linux/Unix

確保該目錄存在且 Web 服務器進程有讀寫權限。

2. 「Headers already sent」錯誤

錯誤訊息:Cannot send session cookie - headers already sent

原因:在 session_start() 之前已有輸出(包含空白行、HTML 標籤、echo 等)。

錯誤範例:

<html>
<?php session_start(); ?>

正確寫法:將 session_start() 放在檔案最開頭,任何輸出之前:

<?php session_start(); ?>
<html>...

若專案架構難以調整,可開啟輸出緩衝:ob_start() 在腳本開頭,或在 php.ini 設定 output_buffering = On。

3. 檔案上傳臨時目錄

上傳檔案前需在 php.ini 設定臨時目錄:

upload_tmp_dir = "D:/temp"  ; Windows
upload_tmp_dir = "/tmp"      ; Linux/Unix

並確認 php.ini 中 file_uploads = On、upload_max_filesize 與 post_max_size 符合需求。

完整上傳範例

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="hidden" name="MAX_FILE_SIZE" value="1048576">
  <input type="file" name="userfile">
  <input type="submit" name="upload" value="上傳">
</form>

upload.php 中使用 move_uploaded_file() 而非 copy(),並嚴格驗證檔案類型與大小。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved