原來 login.php 裡在 <?php ... ?> 之前有空白行,而且 login.php include 的 base.php 裡在 <?php ... ?> 之後也有空白行,所以當登入成功後,使用 header 進行 redirect 時,PHP 就報錯。
PHP 規定在 header 進行 redirect 之前不可以有任何 output,所以我的空白行就是兇手之一,保險的作法就是拿掉 redirect 之前所有的空白行。
至於本機沒報錯,原因出在兩個環境的設定不同,開啟 php.ini 找到 output_buffering 設定,本機設定為:
output_buffering = 4096測試機設定為
output_buffering = 0很明顯的,我的空白行由 4096 吃掉了,偷懶的作法就是直接改 output_buffering 的設定,但是當環境身不由己時,只好乖乖的拿掉空白行。
沒有留言:
張貼留言