标签归档:php

纯php省略闭合标签?>的好处

找了一些资料,大家对PHP闭合标签的总结如下:

好处:如果这个是一个被别人包含的程序,没有这个结束符,可以减少很多很多问题,比如说:header, setcookie, session_start这些动作之前不能有输出,如果不小心在?> 后边加了不可见字符(多余的空格、换行符)等破坏页面显示,就会报”Header already sent”错误,不写的话不会有此问题。另,可以直接把光标移到最后,接着编程。

坏处:在dreamweaver的视图模式下,一团糟。

关于PHP闭合标签官方解释是:PHP闭合标签“?>”在PHP中对PHP的分析器是可选的。但是,如果使用闭合标签,任何由开发者,用户,或者FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

不当的:

<?php

echo “Here’s my code!”;

?>

适当的:

<?php

echo “Here’s my code!”;

/* End of file myfile.php */

/* Location: ./system/modules/mymodule/myfile.php */

因此,如果是纯php code文件的话,应该省略?>结束标识符。

php $_ENV为空

在移植代码的时候,发现程序某个功能出错了,
查找原因原来是$_ENV为空的,
原来是php.ino的配置所致,
把php.ini的variables_order=”GPCS”,
改为:variables_order=”EGPCS”。

variables_order为GPCS也就是说系统在定义PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E),
你可以修改php.ini文件的variables_order值为你想要的顺序,如:”EGPCS”。这时,$_ENV的值就可以取得了 ,
EGPCS值(EGPCS是Environment、Get、Post、Cookies、Server的缩写 — 这是PHP中外部变量来源的全部范围)

windows下php以fastcgi运行支持ThinkPHP的URL重写

因为在Fastcgi模式下,php不支持rewrite的目标网址的PATH_INFO的解析
ThinkPHP运行在URL_MODEL=2时,会出现 No input file specified.的情况,
这时可以修改网站目录的.htaccess文件:
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
改为
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]

.htaccess的内容为:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]