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. 

"NOTICE: PHP message: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 12288 bytes)
场景: 上传一个2M多的图片导致内存溢出
原因: 代码中使用函数: 
imagecreatefromjpeg   这样内存中会根据图片进行重绘,收图片分辨率的影响,导致超出设置的128M的内存
解决: 
1.分配内存增大
2.限制上传的图片的分辨率

 

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.

 

posted @ 2018-04-11 17:01  X-Wolf  阅读(479)  评论(0)    收藏  举报