background image

最令 PHP 初学者们头痛的十四个问题

作者: 佚名 来源:网络 浏览:1782 日期:2006-6-17 18:04:24

    【1

 

】页面之间无法传递变量 get,post,session 在最新的 PHP 版本中自动全局变量是关闭的,所以要

从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也
可以修改自动全局变量为开(php.ini 改为 reGISter_globals = On);考虑到兼容性,还是强迫自己熟
悉新的写法比较好。 

 

   【2】Win32 下 apache2 用 get 方法传递中文参数会出错: 

 

   test.php?a=你好&b=你也好 

 

   传递参数是会导致一个内部错误 

 

   解决办法:"test.php?a=".urlencode(你好)."&b=".urlencode(你也好) 

 

   ............. 

 

   【3】win32 下的 session 不能正常工作 

 

   php.ini 默认的 session.save_path = /tmp 

 

   这显然是 Linux 下的配置,win32 下 php 无法读写 session 文件导致 session 无法使用,把它改
成一个绝对路径就可以了,例如 session.save_path = c:Windows emp 

 

   【4】显示错误信息 

 

   当 php.ini 的 display_errors = On 并且 error_reporting = E_ALL 时,将显示所有的错误和提
示,调试的时候最好打开以便纠错,如果你用以前 php 写法错误信息多半是关于未定义变量的。变量在
赋值以前调用会有提示,解决办法是探测或者屏蔽。 

 

   例如显示$foo,可以 if(isset($foo)) echo $foo 或者 echo @$foo 

 

   【5】Win32 下 mail()不能发送电子邮件 

 

   在 linux 下配置好的 sendmail 可以发送,在 win32 下需要调用 smtp 服务器来发送电子邮件,
修改 php.ini 的 SMTP = ip //ip 是不带验证功能的 smtp 服务器(网上很难找到) 

 

   php 发送邮件的最好解决方法是用 socket 直接发送到对方 email 服务器而不用转发服务器。 

 

    【 6 】 初 装 的 MySQL 如 果 没 有 设 置 密 码 , 应 该 使 用 update   mysql.user   set