Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

PHP Closing Tags

Posted on 2011 年 12 月 23 日2021 年 3 月 12 日 By 日落 在〈PHP Closing Tags〉中尚無留言

一般寫 PHP 會將系統設定、資料庫連結等功能分開放在多個不同的檔案中。

index.php:

<?php
   require('settings.php');

   // something else

   session_start();
?>

settings.php:

<?php
   // some settings
?>
 

以上程式執行以後會噴錯誤訊息:
session_start(): Cannot send session cache limiter - headers already sent
原因是在 index.php 呼叫 session_start() 之前已經輸出資料,不過到底是哪裡有輸出資料?仔細看才會發現 settings.php 在「?>」後方還換了一行,換行是在 PHP closing tag 之外,所以就被當作一般資料送出。

當程式很龐大時,這種 bug 實在會讓人摔鍵盤、丟滑鼠、凹螢幕。

事實上 PHP 程式不加上結尾的「?>」也是可以執行的,直譯器到檔案結尾會自動當作該程式段落結束,所以程式可以改寫成這樣:

index.php

<?php
   require('settings.php');

   // something else

   session_start();
 

settings.php

<?php
   // some settings
 
 
Tags:PHP, 程式設計

文章導覽

Previous Post: 線上檔案掃毒整合平台
Next Post: for 迴圈

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.