PHP向服务器错误记录、文件或远程目标发送一个错误-程序员宅基地

技术标签: python  开发工具  php  


一、用到的函数说明

1语法: error_log(error, type, destination, headers)

2 参数说明:

    error: 必需, 要记录的错误消息

    type: 可选。规定错误记录的类型, 可能的看记录类型:

        0 - 默认, 根据在php.ini文件中的error_log配置,错误被发送到服务器日志系统或文件

        1 - 错误被发送到destination参数中的地址,只有该类型使用headers参数

        2- 通过PHP debugging链接来发送错误。该喧嚣只在PHP 3 中使用

        3- 错误发送到文件目标字符串

    destination:可选,规定向何处发送错误消息,该参数的值依赖于"type”参数的值

    headers:可选, 只有”type“为1时使用。规定附加的头部, 比如From, Cc已经Bcc。有CRLF(\r\n)分隔

        注意:在发送电子邮件时,必须包含From头部。可以在php.ini文件中或这通过此参数设置

3 小知识点:

(1)写电子邮件Cc是Carbon Copy 意为复写的副本,就是我们通常说的抄送

(2)Bcc是Blind Carbon Copy ,意为隐蔽副本,密送。发给谁,除了你跟密送的对象外谁都不知道

(3)抄送与密送的区别:同时发同一篇邮件给很多人时,用抄送的话收件人就知道还有谁也收到了该邮件,用密送,则收件人就不知道还有谁同样也收到了该邮件

二、示例:

/**
 * 发送一封带有自定义错误的电子邮件
 */
 $test = 2;
 if($test > 1){
     echo "eee\n";
     error_log("A custom error has been triggered", 1, "[email protected]", "From: [email protected]");
     echo "eee2\n";
 }

三、问题解决

1 问题:sh: 1: /usr/sbin/sendmail: not found

2 出现原因:没有启动或安装sendmail组件

3 解决办法:

(1)安装sendemial: ubuntu系统下的安装方法之一, sudo apt-get install sendemail

(2)重启php-fpm进程: sudo /etc/init.d/php-fpm restart, 我使用了sudo /etc/init.d/php-fastcgi restart

(3)检测sendemail是否运行正常: sudo /etc/init.d/sendmail status,如果现实正在运行running就可以

    可能用到的命令:

    sudo /etc/init.d/sendmail start (启动sendmial)

    sudo /etc/init.d/sendmail stop (关闭sendmail)

    sudo /etc/init.d/sendmial restart(重启sendmail)

(4)配置php.ini, 填写sendmial的绝对路径

    1>查找php的安装目录: locate php5, 例如查找到在/usr/share/中

    2>填写sendmail的绝对路径:

       a:打开php的配置文件php.init,例如sudo vim /usr/share/php5/php.ini-development 

        b:输入?sendmail_path查找定位

        c:编辑修改sendmail_path配置,sendmail_path = /usr/share/sendmial -t -i

(5)重启php-fpm进程: sudo /etc/init.d/php-fpm restart



转载于:https://my.oschina.net/syc2013/blog/366428

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33738982/article/details/91917520

智能推荐

3.利用抽象类编写一个程序实现公交车卡售票管理。当输入为“老年卡”、“学生卡”和“普通卡”时显示不同的卡类,及购票金额(“老年卡”购票金额=原价*50%、“学生卡”购票金额=原价*60%、“普通卡”购...-程序员宅基地

文章浏览阅读382次。下面是一种可能的实现方式:创建一个抽象类 Card,包含以下成员函数:构造函数:用于初始化卡的信息充值函数:用于向卡内充值金额余额查询函数:用于查询卡内的余额刷卡消费函数:用于在刷卡时扣除相应的金额纯虚函数:用于完成刷卡种类显示和设置折扣率的操作创建三个派生类 OldCard、StudentCard 和 NormalCard,分别表示老年卡、学生卡和普通卡。这三个类都从 C..._公交卡售票管理系统

Ubuntu 编译GLIBC_ubuntu glibc编译-程序员宅基地

文章浏览阅读1.5k次。GLIBC版本过低或者重新编译1、下载GLIBC源下载地址2、解压tar -zxvf 文件名3、在解压后的目录中创建build文件夹4、进入build文件夹,执行命令:…/configure中途会提示安装gawk:apt install gawk,安装后再次执行…/configure..._ubuntu glibc编译

CoreTelephony框架的简单使用_definition of 'ctcarrier' must be imported from mo-程序员宅基地

文章浏览阅读1.5w次。本文简单地使用了CoreTelephony这个曾经的私有框架来输出手机的运营商信息和通话信息。_definition of 'ctcarrier' must be imported from module 'coretele

Springboot 全局异常处理-程序员宅基地

文章浏览阅读87次。Springboot异常处理1、现在工作了,用的不是springboot,这篇博客只是用来记录操作,不太多解释直接上代码,不bb,package com.dly.utils;import com.dly.exception.CmsException;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControlle

vue中使用swiper实现左右滑动切换图片_vue图片滑动切换-程序员宅基地

文章浏览阅读4.7k次。使用npm 安装vue-awesome-swipernpm install vue-awesome-swiper --save在main.js中引用import VueAwesomeSwiper from 'vue-awesome-swiper'Vue.user(VueAwesomeSwiper)import 'swiper/dist/css/swiper.css'在组件..._vue图片滑动切换

poj1036 Gangsters-程序员宅基地

文章浏览阅读2.6k次。题意:N个歹徒去一个餐馆,旅馆门有k个打开程度(每个打开程度为门的一个状态),每个歹徒拥有自己的肥胖度(两个歹徒的肥胖度可能相同)和繁荣度(prosperity),歹徒在i 时刻到餐厅来(两个歹徒可能同时来餐馆),若此时刻门的打开程度与歹徒的肥胖度相同,则歹徒就进入餐馆,同时餐馆_poj1036

随便推点

Jmeter 控制台-启动报错:Could not initialize class org.apache.jmeter.gui.util.MenuFactory-程序员宅基地

文章浏览阅读3k次。1.下载:plugins-manager.jar包2.地址:https://jmeter-plugins.org/install/Install/3.将jar包放到lib/ext4.重启jmeter_could not initialize class org.apache.jmeter.gui.util.menufactory

SQL注入---大小写绕过_大小写注入-程序员宅基地

文章浏览阅读705次。WEB安全篇 SQL注入绕过技术 02 大小写转换 NULL值 N值 双引号 十六进制绕过注入1、大小写转换select * from users where id=1 Union sEleCT 1,2,3,4;在less中测试内容被过滤空格被过滤掉用%0a替换空格,空格未被过滤爆出账号密码http://192.168.50.185:7766/Less-27/?id=9999%27%0AUniOn%0ASelecT%0A1,(SelecT%0Agroup__大小写注入

Autoleaders控制组——51单片机学习笔记(2)-程序员宅基地

文章浏览阅读1.6k次,点赞55次,收藏31次。LCD1602是一块两排的液晶显示屏,可以输出字母,数字或者一些符号,相比数码管,它可以显示的信息更多,但也使它更加难以解释。这是一个原理简单,但驱动操作比较复杂的外设。这是关于驱动液晶显示屏的代码。//引脚配置://函数定义:/*** @brief LCD1602延时函数,可延时1ms* @param 无* @retval 无*/_nop_();_nop_();_nop_();i = 11;j = 190;do/*** @brief LCD1602写命令。

delphi MessageBox 用法_delphi msgboxsel 引用单元-程序员宅基地

文章浏览阅读3.8k次。delphi MessageBox 用法 1.最简单用法,不带图形MessageBox(0,不同意,提示,MB_OK);MessageBox(0,不同意,提示,MB_OKCANCEL );2.警告对话框:MessageBox(0,密码不能为空,请务必输入密码,警告,MB_ICONEXCLAMATION);3.提示信息对话框:MessageBo_delphi msgboxsel 引用单元

开启固定拨号FDN功能,发送信息时如何做FDN检测_只能向固定拨号号码发信息什么意思-程序员宅基地

文章浏览阅读2.7k次。开启固定拨号FDN功能,发送信息时如何做FDN1. FDN概念固定拨号,FDN(Fixed dialer number),就是只允许呼出FDN菜单中自己输入的电话号码,设定指定拨号后,你的手机只能拨出有限的几个号码啦,也只能接听FDN中的号码。但是,紧急呼叫是不受该限制的。设定指定拨号需要你的pin2码。一般移动公司是不会提供这个码的,需要个人和移动公司交流才能得到。2. FD_只能向固定拨号号码发信息什么意思

谈谈基于OAuth 2.0的第三方认证 [上篇]_oauth2.0 外部接口认证-程序员宅基地

文章浏览阅读223次。谈谈基于OAuth 2.0的第三方认证 [上篇] https://www.cnblogs.com/artech/p/oauth-01.html对于目前大部分Web应用来说,用户认证基本上都由应用自身来完成。具体来说,Web应用利用自身存储的用户凭证(基本上是用户名/密码)与用户提供的凭证进行比较进而确认其真实身份。但是这种由Web应用全权负责的认证方式会带来如下两个问题:对于用户来说,他..._oauth2.0 外部接口认证