最令PHP初学者们头痛的十四个问题
需积分: 0 105 浏览量
更新于2020-12-17
收藏 80KB PDF 举报
【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=”.urlenc
【PHP页面间变量传递】
在PHP最新版本中,为了增强安全性,自动全局变量`register_globals`已经被默认关闭。这意味着在不同页面间传递变量时,不能再像以前那样直接使用`$foo`,而是需要通过`$_GET['foo']`, `$_POST['foo']`, `$_SESSION['foo']`等预定义数组来获取。尽管可以通过修改`php.ini`文件将`register_globals`设置为`On`来恢复旧的全局变量行为,但这样做并不推荐,因为这可能导致安全漏洞和兼容性问题。因此,学习并适应新的变量获取方式是更明智的选择。
【Win32下Apache2 GET传递中文参数错误】
在Windows环境下,使用Apache2通过GET方法传递包含中文字符的参数可能会遇到问题。例如,`test.php?a=你好&b=你也好`可能导致内部错误。解决这个问题的方法是对中文参数进行URL编码,使用`urlencode()`函数,如`"test.php?a=".urlencode('你好')."&b=".urlencode('你也好')`。这样可以确保URL中的中文字符正确传输。
【Win32下的Session问题】
PHP在Win32系统中默认的`session.save_path`配置是针对Linux系统的 `/tmp` 目录,这会导致在Windows环境下无法正常工作。要解决此问题,需要在`php.ini`中将`session.save_path`更改为Windows下的一个绝对路径,例如 `c:\Windows\temp`。
【显示错误信息】
在开发过程中,为了便于调试,应开启`display_errors`和`error_reporting`。当`display_errors = On`且`error_reporting = E_ALL`时,所有错误和警告都会显示。如果出现关于未定义变量的错误,可以使用`isset()`函数检测变量是否存在,或者使用错误抑制符`@`,如`if(isset($foo)) echo $foo;` 或 `echo @$foo;`。
【Win32下`mail()`函数发送邮件】
在Windows环境下,`mail()`函数通常不能直接发送邮件,因为缺少类似Linux下的sendmail配置。此时,需要配置`SMTP`服务器的IP地址,如`SMTP = ip`,其中`ip`是无验证功能的SMTP服务器。更好的方法是通过socket直接与目标邮件服务器通信,避免依赖转发服务器。
【MySQL无密码设置】
初次安装MySQL后,若未设置密码,可使用SQL语句`UPDATE mysql.user SET password = 'yourpassword' WHERE user = 'root';`来修改root用户的密码。
【`header()`已发送错误】
当尝试使用`header()`函数时,如果在此之前有输出(如打印、echo),或者文件开头有空行,或者包含的文件尾部有输出,都可能导致“header already sent”错误。解决方法是检查并消除这些潜在的输出,确保在使用`header()`前没有其他内容被发送。
【`php.ini`更改无效】
修改`php.ini`后,必须重启Web服务器(如IIS或Apache)以使新设置生效。
【PHP在Windows Server 2003上的安装】
对于ISAPI安装,由于PHP4的`php4isapi.dll`可能存在与Windows Server 2003的冲突,建议使用CGI模式安装。步骤包括下载安装程序,配置IIS,新建Web服务扩展,指定PHP可执行文件路径,并允许扩展运行。
【SQL语句调试】
当SQL语句执行失败时,可以尝试将SQL语句echo出来,查看变量的值是否正确,以帮助调试。
【`include`与`require`的区别】
两者都用于包含文件,但当包含的文件不存在时,`include`仅发出Notice并继续执行,而`require`则抛出Fatal Error并停止脚本。`include_once`和`require_once`则确保文件只被包含一次,防止重复加载。在Windows平台上,它们通常先包含后执行,而在多线程环境下,如*nix系统,情况可能有所不同。
以上就是PHP初学者常遇到的一些问题及其解决方案,理解并掌握这些知识将有助于更好地学习和使用PHP。
weixin_38707862
- 粉丝: 8
- 资源: 922
最新资源
- 【信号检测】基于matlab大规模过载MIMO信号检测(含信噪比)【含Matlab源码 9938期】.zip
- 【图像压缩】基于matlab GUI DCT图像压缩(含MAX MED MIN NONE)【含Matlab源码 9946期】.zip
- 【信号检测】基于matlab大规模过载MIMO信号检测(含信噪比LDPC)【含Matlab源码 9939期】.zip
- 基于小程序的新冠抗原自测平台小程序源代码(java+小程序+mysql+LW).zip
- 基于小程序的养老院管理系统源代码(java+小程序+mysql+LW).zip
- 3. Kafka入门-安装与基本命令
- 多功能知识付费源码下载实现流量互导多渠道变现+搭建教程
- 基于小程序的音乐播放器小程序源代码(java+小程序+mysql+LW).zip
- 基于小程序的岳阳市美术馆预约平台源代码(java+小程序+mysql+LW).zip
- 基于小程序的在线疫苗预约小程序源代码(java+小程序+mysql+LW).zip
- IEC 60870-5 协议全套资料
- 基于小程序的智慧物流小程序源代码(java+小程序+mysql+LW).zip
- MVIMG_20241222_194113.jpg
- 基于小程序的智慧物业平台源代码(java+小程序+mysql+LW).zip
- 第四组二手产品.zip
- 微电网(两台)主从控制孤岛-并网平滑切的分析 分析了: 1.孤岛下VF控制 2.并网下PQ控制 3.孤岛下主从控制 4.孤岛到并网的平滑切控制 5.除模型外还对分布式发电与主动配电网一些常见问题做了