PHP常见错误汇总
日常开发和调试的时候,经常会遇到一些错误,光怪陆离的不知所以,所以,特此将错误汇总一下,借鉴!!!
1.
原因分析: 一般可能是该文件出现了问题,检查一下代码和格式,是否出现开始的地方出现了空格,或者字符集非utf-8
例如:
2.
原因分析: 在解析XML数据的时候 报出的这个错误,使用函数 simplxml_load_string($xmlData); 之所以错误是因为: 在文件的最前端 即<?xml version="1.0" encoding="UTF-8"?>前面不能有空格。
解决: 将该标签前面的空格进行删除即可.
知识点: simplexml_load_string 函数的使用. 它是将格式良好的XML字符串转化为SimpleXMLElement对象
参数介绍:
-
- LIBXML_COMPACT - 激活节点分配优化(可加速应用程序)
- LIBXML_DTDATTR - 设置默认DTD属性
- LIBXML_DTDLOAD - 加载外部子集
- LIBXML_DTDVALID - 使用DTD进行验证
- LIBXML_NOBLANKS - 删除空白节点
- LIBXML_NOCDATA - 将CDATA合并为文本节点
- LIBXML_NOEMPTYTAG - 展开空标记(例如对<br> </ br>),仅在DOMDocument-> save()和DOMDocument-> saveXML()函数中可用
- LIBXML_NOENT - 替代实体
- LIBXML_NOERROR - 不显示错误报告
- LIBXML_NONET - 加载文档时禁用网络访问
- LIBXML_NOWARNING - 不显示警告报告
- LIBXML_NOXMLDECL - 保存文档时删除XML声明
- LIBXML_NSCLEAN - 删除多余的命名空间声明
- LIBXML_PARSEHUGE - 设置XML_PARSE_HUGE标志,放宽解析器的任何硬编码限制。这会影响极限,如文档的最大深度和文本节点大小的限制
- LIBXML_XINCLUDE - 实现XInclude替换
- LIBXML_ERR_ERROR - 获取可恢复的错误
- LIBXML_ERR_FATAL - 获取致命错误
- LIBXML_ERR_NONE - 获取无错误
- LIBXML_ERR_WARNING - 获取简单的警告
- LIBXML_VERSION - 获取libxml版本
- LIBXML_DOTTED_VERSION - 获取点分的libxml版本
3.
问题: 在使用thinkphp框架的时候,发生不能进行路由的访问,都是返回的500错误
原因: PHP中有设置对于disabled_functions 禁用的一些函数,例如 : exec,scandir,shell_exec 等函数被禁用,但是框架中频繁的使用这些函数而导致
解决方案: 修改php.ini配置文件,将thinkphp框架中用到的函数,从禁用的函数中去除即可,正常访问了
4.
5.使用composer安装依赖的是吧报错:PHP Fatal error: Uncaught TypeError: Return value of Symfony\Component\Process\Process::close() must be of the type int, null returned in phar:///usr/local/bin/composer/vendor/symfony/process/Process.php:1466
需要放开 /usr/local/php/etc/php.ini
中的几个函数:proc_open,proc_get_status
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
顺便composer相关:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" php composer-setup.php # 移动到全局范围 mv composer.phar /usr/local/bin/composer # 更新 composer composer selfupdate
6.