PHPCMS开发文档里看到PHP编码规范
注:这是从PHPCMS开发文档里看到编码规范,虽名为PHPCMS的开发规范,但我觉得所有的PHP编程都该如此。写了那么多PHP,很多编码对照这规范都感觉欠缺很多,今后一定要对照纠正。
注:这是从PHPCMS开发文档里看到编码规范,虽名为PHPCMS的开发规范,但我觉得所有的PHP编程都该如此。写了那么多PHP,很多编码对照这规范都感觉欠缺很多,今后一定要对照纠正。
1. unix/windows: 我的php.ini 文件应该放在哪? n\z\5E3VP
unix下默认它应该放在 /usr/local/lib 目录下。 这是它的 /lib. 很多人会在编译时改变它,使用–with-config-file-path 标志。 例如, 你可以这样设它: –with-config-file-path=/etc ,P};u2@<
X.I/|}C$
然后你可以复制源程序包里的 php.ini-dist 到 /etc/php.ini ,编辑它满足你的本地化需求。 Kl<jww
windows下 php.ini默认的路径是 windows 系统目录. 如果你在使用 apache webserver, php.ini 则最先在 apaches 安装目录下被查找, 例如: c:\program files\apache group\apache. 这样你可以有不同的 php.ini 对应不同版本的 apache(同一台机器上)。 eAD[[
更多细节请查阅 configuration file. 4u!,bgZ
2. unix: 我安装了 php, 但我每次加载一个文档, 会得到下面的消息: 'document contains no data'! 怎么回事? OD++_]{
这可能是因为你的 php 发生了core-dumping错误。 查找你的服务器错误日志文件,看看是否属于这种情况。 然后报告这个错误。如果你知道怎样使用 ‘gdb’,你可以提供一个 backtrace 在你的错误报告里。这将会对开发人员解决 这个问题有很大帮助。如果你是在将php作为apache模块使用,那么请按下面的步骤做: ‘S l @
,|Bj/6U
b_. F8%F
停止 httpd 进程 Ph%u$!0x
wG!/! <(
gdb httpd S\+?t27*A
T}<uu .$
停止 httpd 进程 l7Sb4A <
o/k@4F4=vW
> run -x -f /path/to/httpd.conf ,i*$TAN
_+i]Ab”T
浏览你刚才出错的 url ]1k>(f
AK V~(V’
> run -x -f /path/to/httpd.conf <T$aPzJ
.1D ,`
如果你还有 core dump, gdb 现在会通知你 0Snn6Na_b
dN-q<+|GU
打入: bt !ySa+U9#gp
,r~f j
在你的 bug report里应该包含backtrace 。 这些会被发往 http://bugs.php.net/ til9% x
{7 nB%SE
`^”r GE
如果你的脚本使用了正则表达式函数 (ereg() and friends), 你应该确保你编译 php 和 apache 用的是同一个正则表达式包。 在 php 和 apache 1.3.x 这个过程是自动进行的。 +lq6%!hz
3. unix: 我使用 rpms 安装 php , 但apache 不支持 php页面! 怎么办? e&L#q*
假设你安装了 apache 和 php(从 rpm ) , 你需要反注释或者增加一些行在你的 http.conf 文件里: # extra modulesaddmodule mod_php.caddmodule mod_php3.caddmodule mod_perl.c# extra modulesloadmodule php_module modules/mod_php.soloadmodule php3_module modules/libphp3.so /* for php 3 */loadmodule php4_module modules/libphp4.so /* for php 4 */loadmodule perl_module modules/libperl.so o?> XDY
P['s,Dd
and add: addtype application/x-httpd-php3 .php3 /* for php 3 */addtype application/x-httpd-php .php /* for php 4 */ y,@q;#uy
o .Q 6]
… 到全局域里, 或者到你想要的 支持php的虚拟域里。 $ O~L
4. 我使用 rpms 安装 php 3 , 但是它没有我需要的数据库选项支持! 我该怎么办? Ea~]L#
因为 php 3 内建支持的关系, 编译一个完整的可适于所有应用的 php rpm是相当困难的。 在 php 4有谈到这点。 对 php 3, 我们只好建议你使用install.redhat (在 php包里)描述的机制。 如果你一定要使用 rpm 版的 php 3, 读… s>[n/j0&\
rpm 包管理器设置 rpms 简单的安装,不带数据库支持 and 因为rpms 使用 /usr/ 而不是标准的 /usr/local/ 目录存放文件. 你需要告诉 rpm 文件你要支持哪种数据库以及它们的最上级目录的位置。 J$B-
下面的例子将解释在apache模式下怎样支持通行的数据库mysql. C,t+-Hnd
当然所有的这些可以稍作修改,以支持其它的php支持的数据库。我们假设你安装了 mysql and apache ,完全是用 rpms 安装的。 1D]mRPRM
:ew8_w,&j[
8xgWh[*G
首先,移去 mod_php3 : rpm -e mod_php3 =xurSdBeR6
lF_bM}swY
UW:X,m_'
q*S/-dD_
然后取得rpm包并安装, 不是 --重编译 rpm -uvh mod_php3-3.0.5-2.src.rpm %(/>uni
tw` 7F G
l@!c|'
"9"N8o;
编辑/usr/src/redhat/specs/mod_php3.spec 文件 Mea$u@OH1
在 %build 一节里增加你想要的数据库支持, 以及路径信息。 Q< 4 K
对 mysql 你应该增加: --with-mysql=/usr \ CV?Pn{
j WB21
%build 节看起来象: ./configure --prefix=/usr \ --with-apxs=/usr/sbin/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex 2oC+Fp>A
auSN_
muz.ydPD
:oCmk!
改动完成后,象下面这样重编rpm : rpm -bb /usr/src/redhat/specs/mod_php3.spec gXO"h~ 4E
&Ce=V
qT9Jwj
(,1P4[Yh(&
then install the rpm rpm -ivh /usr/src/redhat/rpms/i386/mod_php3-3.0.5-2.i386.rpm K []kFE)
owk)qFz;
q0[W YvH
重启 apache,你已经得到了rpm下的mysql的支持。 注意到这种做法比你重新得到一个 php 3 的tarball 代码,按照 install.redhat 的指引一步一步做要容易得多。 @a8FuO*-
.8h&S l/
5. unix: 我用 frontpage 扩展包对apache打了补丁, 忽然 php 停止工作。 是php 和 apache frontpage 包不兼容吗 ? M6{n &0C
不是, php 和 frontpage扩展包运行得很好.。问题是frontpage 包修改了几个apache 结构参数,而php要用到它们.在frontpage扩展包被打上后, 重新编译 php (使用 'make clean ; make') ,会解决这个问题。 aQk2[w a
6. unix/windows: 我安装了php,但在浏览器里看我的php页面时,空白一片。 rF)`s.
在浏览器里用'查看源文件'看你的脚本,你可能会发现你看到的是源程序。 这表示 web server 并没有送脚本到php去执行。肯定是服务器配置上哪儿出了错。 仔细检查php安装的 server 配置。 oXIJ>uBK
7. unix/windows: 我安装了php,但在浏览器里看我的 php页面时,我得到一个 server 500 error。 Z^N.C}U
这是服务器在运行 php 时发生了错误。 为了看到可读的错误信息,在命令行,改变目录到 (php.exe windows)所在目录, 运行 php -i. 如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。 如果你得到满屏的html代码 (phpinfo() 函数的输出), 那么php工作正常,这个错误就是由于服务器配置引发的,应该仔细检查。 l+Y\Ile
8. 某些操作系统: 我安装php没出错,可是我启动apache时,得到一个 undefined symbol errors: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd undefined symbols: _compress _uncompress \A6uE[&
iqd^OA`{?
P v/r_<
这个问题其实与 php 无关, 而与 mysql 客户端库有关。 --with-zlib,有些操作系统需要,而有些不需要。mysql faq已经讲述了这个问题。 jXfYO!!Iq
9. windows: 我安装了php,但在浏览器里看我的php页面, 得到如下错误: cgi error: the specified cgi application misbehaved by not returning a complete set of http headers. the headers it did return are: 5[ 7@ +
( w2U <H
%iY^
这是 php 根本没有产生任何输出。 为了看到可读的错误信息,在命令行,改变目录到 (php.exe windows)所在目录, 运行 php -i. 如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。 如果你得到满屏的html代码 (phpinfo() 函数的输出), 那么php工作正常。 oZ0w 9js
一旦php在命令行模式下工作,再看看你的脚本程序, 它还是失败,可能是因为以下原因: 5X"SZrz
D|S6 QGt
,uIy:f35IR
你的php脚本的权限许可。 php.exe, php4ts.dll, php.ini 或者任何你可能装入的php文件,它样都必须能被匿名 internet 用户 isur_ 访问。 fps52&E
3 s6AO}
脚本文件根本不存在(或者不是你认为的位置。)请注意在iis里,你能够阻塞这个错误,做法是在设置脚本映射目录时, 选上'check file exists'框。这样如果脚本不存在,服务器会返回一个404错误。 这样做也有其它的一些好处, 就是iis仅为你做经过授权的操作。 6bwUk#zAk
2G8f]go-b
10. windows: 我严格按照install的要求做,可是还是不能让我的php在iis下工作。 #()4Yf+KWX
确定任何想要运行php的用户有操作php.exe的权限! iis 使用匿名的internet用户,它是在iis安装时系统自动增加的。 这个用户需要操作 php.exe的权限. 还有,任何需要授权的用户也必须有访问 php.exe的权限。 在 iis4下,你要告诉它php是一个脚本引擎。 .Z8 QlnX
^Q ERt
d[bf?jBz!
安装后,就可以开始学PHP了。入门学习,可以看看《PHP网络编程从入门到精通》《零基础学PHP》。入门后,可以看看《PHP+MYSQL经典案例剖析》和《完全手册:PHP网络开发详解》。在Linux开发,可以看看《LAMP网站开发黄金组合LINUX+APACHE+MYSQL+PHP》。
问题描述,采用gbk页面传输中文到后台,后台显示乱码。
经过查看原来是prototype把前台的gbk自作聪明变成了utf8(这是合理的方法哈),造成后台无法取得正确的编码。
某个功能被编译到so文件中,那么如何通过php来调用它?一个方法是写一个php模块(php extension),在php中调用该模块内的函数,再通过该模块来调用so中的函数。下面做一个简单的例子,使用的操作系统是Fedora Core 6。
首先做一个简单的so文件:
要采集一个网站,目标站采用了gzip压缩传输网页,本来应该只要发送一个http头 Accept-Encoding: identity或者干脆不发送这个头等,就可以使目标站返回没有经过gzip压缩的页面了,不过很不幸,目标站无视客户端的请求,仍然返回gzip数据,造成乱码。
MySQL并发能力强、响应速度快,是性能优异的数据库软件;PHP是功能强大的服务器端脚本语言。笔者在网站开发中,采用PHP4.0+MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开发中的应用。
以前开始学习PHP的时候也是使用的面向结构的思想,因为我们一开始接触C++的时候就是使用的面向结构的代码。虽然后来学习了类,但是还是对于面向结构比较喜欢吧。
做一个首页调用图像,有时候往往需要获得固定大小的图像,因为首页的图像位置通常由设计人员指定好了,如果是做最新发布图像调用,因为不知道客户会上传什么比例的图像,所以,有时候也就没有办法确定图像的比例,前台页面编写人员通常会采用固定 img 元素高宽的办法来达到控制图像不溢出,但如果图像的比例不是需要的比例,就会造成图像调用后变形,很大程度上影响了页面的美观,有解决的方法是,按照原图比例进行缩放,缩放后的图像难免会有空白,空白处填以颜色,这样虽然图像不变形了,但这样会有很多问题,比如,如果用户发一个图像很高但宽度一般的图像,如果压缩成一个1:1的图像,那么压缩后基本就会看不到图像了。
我这里的解决办法是,任意图像裁剪成固定大小,图像不变形,空白处拉伸填充,图像始终铺满,不留空白,用过bcastr的朋友应该知道,bcastr就是保证了图像调用的不变形,对一个固定大小输出的图像框,源图有以下几种情况:
Copyright © 2008-2010 52lamp.com.cn All rights reserved
版权申明:本站文章部分来自网络,如有侵权,请联系sunliwhd@gmail.com ,我们收到后立即删除,谢谢!