“老猫师傅”通过精心收集,向本站投稿了8篇IIS中php sendmail函数无法发送邮件Windows服务器操作系统,下面是小编整理后的IIS中php sendmail函数无法发送邮件Windows服务器操作系统,欢迎大家阅读借鉴,并有积极分享。
- 目录
- 第1篇:IIS中php sendmail函数无法发送邮件Windows服务器操作系统第2篇:linux中mail函数不能发送邮件linux操作系统第3篇:iis配置php无法上传文件解决办法Windows服务器操作系统第4篇:windows服务器中iis限制文件大小方法Windows服务器操作系统第5篇:Windows 2003 中IIS php5isapi.dll加载失败Windows服务器操作系统第6篇:Windows服务器怎么查看iis并发连接数Windows服务器操作系统第7篇:重启IIS怎么重启?重启iis命令详解Windows服务器操作系统第8篇:windows IIS 日志文件如何查看及分析Windows服务器操作系统
篇1:IIS中php sendmail函数无法发送邮件Windows服务器操作系统
在iis+php环境中我们发送邮件一般使用sendmail函数发送邮件,但我配置的环境利用sendmail函数发不了邮件了,后找了很久找到了解决办法,下面我一路给各位同学讲来,
首先你需要先到从glob.com.au/sendmail/下载sendmail.zip文件,点此可以直接下载噢,然后把它解压到如D:/php/sendmail/目录下。
然后打开php.ini文件,找到下面这段代码
代码如下复制代码[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
; sendmail_path = “”
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail, even in safe mode.
;mail.force_extra_parameters =
默认情况下是以本机做为邮件服务器,这里我们需要借用sendmail来发送邮件,用sendmail来配置如用qq、163的邮箱来发送(一般都是以这种方式)所以我们需要把所有的选项都注销,即把SMTP = localhost和smtp_port = 25前面加上“;”然后把sendmai_path=“”前面的“;”删掉,改为sendmai_path=“d:/php/sendmail/sendmail.exe -t”,改完后的即是
代码如下复制代码[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path = “d:/php/sendmail/sendmail.exe -t”
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
注意以上只需要开启sendmail_path即可,然后保存
接着修改sendmail目录下的sendmail.ini文件,主要填的内容有以下几项
代码如下复制代码smtp_server=smtp服务器地址(如 smtp.ym.163.com)
auth_username=邮箱登录名(如 info@xxxx.com)
auth_password=邮箱密码(如 xxxxxx)
force_sender=发件人地址全写(如 info@xxxx.com)
另外还有一项
代码如下复制代码; auto = use SSL for port 465, otherwise try to use TLS
把前面的“;”删除,即开启SSL安全登录选项即可
以上四项正确填写修改完成后保存,然后重启IIS即可正常使用,现在很高兴地测试我的wordpress博客了
现在开始调试wordpress博客,但发现服务器无法发送邮件,sendmail已经安装,但是继续提示邮件发送不成功,
分析了很久,总算找到了原因
第一步:安装sendmail服务
下载sendmail.RAR存放至php目录下的sendmail目录,结构如下:
第二步、配置php.ini文件
代码如下复制代码sendmail_path =”D:/php/sendmail/sendmail.exe -t”盘符和位置根据sendmail.exe文件位置确定
第三步、配置sendemail.ini
代码如下复制代码smtp_server=smtp.sina.com.cn
smtp_port=25
这俩个是要求验证的时候的账号,密码
auth_username=ifbs
auth_password=XXXX
第四步、给予cmd.exe权限
C:/WINDOWS/system32/cmd.exe 文件以 users的读权限。不给予权限会出现以下错误。
Warning: mail() [function.mail]: Could not execute mail delivery program
第五步、建立mail.php文件测试结果
代码如下复制代码$mail = “xxxx@sina.com.cn”;
$subject = “Mail Test”;
$text = “This is a test mail for function mail()”;
if(mail($mail,$subject,$text)){
echo “email send success!”;
}else{
echo “email send fail!”;
}
?>
访问mail.php即可测试结果
篇2:linux中mail函数不能发送邮件linux操作系统
linux中mail函数不能发送邮件原因有很多种,下面我来给大家介绍解决mail函数发不了邮件问题的解决办法,希望此教程对各位同学会有所帮助,
没有安装或启动 sendmail 组件
解决办法
我是新手,命令不熟,所以写的很详细,老鸟勿喷哦
1.重新安装 sendmail 组件,我用的是 CentOS ,使用下面的命令安装
代码如下复制代码yum install sendmail
2.使用下面的命令重启php-fpm进程
代码如下复制代码/etc/init.d/php-fpm restart3.检测sendmail是否运行正常
代码如下复制代码/etc/init.d/sendmail status如果显示正在运行running 就可以。
可能用到的命令
代码如下复制代码/etc/init.d/sendmail start (启动sendmail)/etc/init.d/sendmail stop (关闭sendmail)
/etc/init.d/sendmail restart (重启sendmail)
4.配置php.ini,填写sendmail的绝对路径
使用命令打开编辑php.ini
代码如下复制代码vi /usr/local/php/etc/php.ini
输入?sendmail_path 查找定位(或者手动跳转找到sendmail_path),你会发现默认是下面的代码
代码如下复制代码;sendmail_path =
按 i 进入编辑,将这行修改为
代码如下复制代码sendmail_path = /usr/sbin/sendmail -t -i
按 Esc 键退出编辑,输入 :wq 保存退出
5.重启php-fpm进程
代码如下复制代码/etc/init.d/php-fpm restart
篇3:iis配置php无法上传文件解决办法Windows服务器操作系统
本文章给大家介绍iis配置php无法上传文件解决办法,有碰到此类问题的同学可参考,
根据上面的描述,我怀疑问题出在IIS的权限配置上,IUSR_MACHINE的帐户对upload没有写入的权限,于是进行权限修改,IIS下的权限,NTFS下的权限都进行修改,但是终究都没用,查找网络上的资料也没有相应的,对上传页面进行测试,流程为:
swf文件调用save.php上传文件---->swf文件对上传的文件进行重命名--->名字返回给save.php--->显示出最后的名字。
现在的问题一直停留在swf对文件重命名的这里,一直没有到显示出最后的名字,并且swf文件不参与上传过程,那就只能在save.php文件中进行问题查找了,在该文件中进行测试,最后显示的名字所使用的变量为fileName,于是插入下面的语句进行测试:
echo “fileName=2008*****.gif”;
这句话的作用就是使得fileName有值,save.php能正常显示,先把原来的语句一句一句的进行屏蔽测试,都正常的返回了,但是当测试到:
if (mailto:!@move_uploaded_file($f[%22tmp_name“], $dest_dir.'/'.$fileName)) header(”HTTP/1.0 404 Not Found“);
这句话的时候问题出现了,不能上传,查找上下文,一直没发现tmp_name的变量,不过看意思是先把文件上传到一个临时文件,再挪动到目的位置,那这个tmp位置在哪里呢?是不是这个位置不可写,才导致了无法上传文件?
查找网上资料,发现php.ini下面有2个地方关于上传的配置:
file_uploads = On 这里设置是否允许HTTP上传,默认应该为ON的
;upload_tmp_dir= 这里设置上传文件存放的临时位置
网上对于这2个地方的相关资料有:
I try to set up file uploading under IIS 7 and PHP 5.
First problem was to set 2 variables in php.ini
file_uploads = On //这里是说php.ini文件这个地方设置成On
upload_tmp_dir = ”C:Inetpubwwwrootuploads“ //这个路径就是自己设置的上传文件临时存储路径
For some reasons such directory name works,
but ”upload_tmp“ won't work.
The second problem was to set correct user rigths for upload folders where you try to save your file. I set my upload folder rights for the ”WORKGROUP/users“ for the full access. You may experiment by yourselves if you not need execute access, for example.
我的php.ini中upload_tmp_dir是被注释的,没有启用,更没有设置,可是为什么Apache2却可以正常上传呢?难道问题真的出在这里?
解决:
新建一个文件夹做临时上传目录,按照上面的英文说明修改php.ini中相应的那2项,把临时上传目录upload_tmp_dir设置成刚才建立的文件夹,把该文件夹的权限赋予“IUSR_计算机名”用户可写,重新启动IIS,上传试试,问题真的就这样解决了,
最终的分析答案:
上面的内容写于,但是现在7月我新增一台服务器,又出现了这个问题,同时再次按照上面的解决方法实施,在操作的过程中大概是由于哪里出了错,竟然没有成功,不得不抽出点时间来研究具体原因,找到了最终产生这个问题的原因如下。
无法上传文件,不代表所有文件都无法上传,因为我的一个网站,flash调用fwrite传头像之类的成功了,但是调用
代码如下复制代码@move_uploaded_file($f[”tmp_name“], $dest_dir.'/'.$fileName)这样的函数传照片的时候仍旧无法上传。
经过我的分析,原因是由于fwrite是传的二进制文件,而move_uploaded_file()传的是文本文件,而windows操作系统是区分这2种文件的 [参考php手册fwrite()函数的说明],这也就是说这2种不同的文件在php环境下上传时所存储的临时上传目录是不同的,由于在配置IIS环境下的PHP的时候,设置的临时目录为E:tmp,设置该目录的iusr用户可写,二进制文件即可上传,所以我怀疑该目录就是二进制文件上传临时文件的存储位置,那么move_uploaded_file()传的文本文件的临时文件存储位置在哪里呢?其实就是在上面的那段英文里面,upload_tmp_dir设置的路径就是了,但是我的几台服务器中,每台服务器的这个设置的值都是被注释掉的“no value”,为什么有的服务器可以上传,而有的服务器不可以上传呢?这也就回到了以前我提出的问题,为什么Apache2可以上传而iis不可以上传呢?
这次我再次分析upload.php文件,分析其中造成该故障的代码具体内容如下:
代码如下复制代码// 检查是否有文件上传
if (! $_FILES['upload'.$num]['name'] == ”“){
if ($_FILES['upload'.$num]['size'] < $max_size) {
1、echo ”文件上传路径:“.$location.$_FILES['upload'.$num]['name'];
2、echo ”文件临时文件名:“.$_FILES['upload'.$num]['tmp_name'];
3、 move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) or $event = ”Failure“;
} else {
$event = ”File too large!“;
}
其中正常代码中第2句是不存在的,为了测试方便我加上来的,它的主要目的就是测试我的php.ini没有设置upload_dir_tmp的值的时候,上传的文件临时保存在哪里的,经过这个测试发现原来在不配置php.ini的upload_dir_tmp的值的时候,默认的存储位置是在C:windowstemp目录,并且临时文件是以.tmp为后缀存储的,该文件马上就会被删除,所以你想通过操作系统的文件修改搜索功能是无法找到的,也就无法找到upload_dir_tmp的默认路径是哪里。
既然找到了upload_dir_tmp的默认路径了,那么修改c:windowstemp的访问权限,赋予IUSR_用户可写,重启动IIS Admin服务,上传文件,终于成功了。这就是为什么我的多台服务器upload_dir_tmp的值都为空的时候有的可传,有的不可传的原因。
篇4:windows服务器中iis限制文件大小方法Windows服务器操作系统
本文章来介绍一下在windows服务器中如何来利用iis限制各个上传文件的大小问题,有需要的同学可以参考一下,
一、上传文件大小限制修改:
1 、运行iisreset –stop,关闭 iis admin service 服务。
2、找到 windowssystem32inesrv 下的 metabase.xml 文件。
3、用纯文本方式打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(比如10M即:10240000),默认为:204800,即:200K。
4 、存盘,然后运行iisreset重启 iis admin service 服务。
二、下载文件大小限制修改:
1、运行iisreset –stop,关闭 iis admin service 服务。
2、找到 windowssystem32inesrv 下的 metabase.xml 文件,
3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(比如20M即:20480000),默认为4M。
4、存盘,然后运行iisreset重启 iis admin service 服务。
win2008+IIS7:
打开IIS管理器
双击“IIS”中的“ASP”
打开“配置 ASP 应该程序的属性”
展开“限制属性”;
修改“最大请求实体主体限制”的值,默认值为200000(即不到200KB);
把它修改为你想修改的大小,如:52000000(50MB)。
修改完成点击“应用”
篇5:Windows 2003 中IIS php5isapi.dll加载失败Windows服务器操作系统
Windows 2003默认安装的时候都会为每一个盘默认加载users用户组,也就是说每一个用户都可以访问系统里面的资源,IIS运行并加载php的dll文件的时候,也是作为一个用户的身份来访问php目录的,当我们为了系统的安全性,把users用户组去掉的时候,IIS就无法访问到了,也就会出现加载失败的问题了,
1.很多朋友也就明白怎么来解决这个问题了,就是把users这个用户给php目录加上,然后给这个用户组设置读取权限。很多网上的朋友说加everone用户并设置权限,其实道理是一样的,我还是喜欢用users用户组。
总结一点就是权限设置的问题,所以当你的配置和我的配置一样但是还是没有加载成功的时候,那就要注意一下权限的问题了,
2.解决服务器扩展权限:来到IIS6.0的“服务器扩展”设置页面,如果你想图省事,可以直接点击“允许所有的未知ISAPI”的按钮,但我并不推荐这样做,这样太不安全了!我们在此应当添加一个新的服务器扩展,扩展名你可以随便填,文件就选择到那个ISAPI链接库文件上,然后勾选“将状态设置为允许”后,保存。
3.为了使设置生效,请重启系统,重启后你的ISAPI扩展就可以正常加载了!
重要要的原因可能是:服务器做了安全设置,把d:php的everyone权限去掉了,IIS自然没法加载php5isapi.dll。
篇6:Windows服务器怎么查看iis并发连接数Windows服务器操作系统
很多朋友都不知道如何来查看自己服务器的iis并发连接数包括我在内未查看此文章时也不知道,但看了之后觉得简单,下面我来分享windows 2003和2008查看iis并发连接数的步骤
什么是IIS并发连接数
IIS并发连接数是指,首先是向服务器请求XXX.html,然后还会请求这个网页里的CSS、JS、图片等,每次请求算一个IIS并发数,因此IIS理论上是要分为好几程序情况,
要分几种情况:(以100M空间50人在线为例)
用户单点下载你的文件,结束后正常断开,这些连接是按照瞬间计算的,就是说你50人的网站瞬间可以接受同时50个点下载 ;用户打开你的页面,就算停留在页面没有对服务器发出任何请求,那么在用户打开一面以后的15分钟内也都要算一个在线,就是说你50人的网站15分钟内可以接受不同用户打开50个页面
上面B的情况用户继续打开同一个网站的其他页面,那么在线人数按照用户最后一次点击(发出请求)以后的15分钟计算,在这个15分钟内不管用户怎么点击(包括新窗口打开)都还是一人在线。
当你的页面内存在框架(Iframe),那么每多一个框架就要多一倍的在线!因为这相当于用户同一时间向服务器请求了多个页面。
当用户打开页面然后正常关闭浏览器,用户的在线人数也会马上清除。
然后了解什么是论坛在线人数。
论坛在线只是计算一定时间内的活动用户数。
这里的时间用户可以自己设定(删除不活动用户时间),动网论坛默认为40分钟的相对准确值。
根据上面的说明,显然论坛在线和IIS连接数的概念不同
比如您的网站20IIS,出现了403.9错误提示IIS连接过多,而这个时候你的论坛却只显示10人在线(假设在线时间设置为20分钟),那么正确的解释应该是:
访问您的网站有20个连接,其中正常访问论坛的人有10个,
怎么查看iis并发连接数
方法:
点“开始->运行”,在弹框中输入“perfmon.msc”后回车
打开系统监视器,在右侧图表区里点击右键,再点“添加计数器”
在“添加计数器”窗口中,“性能对象”选择”web Service“,“从列表选择计数器”选择中“Current Connection”,“从列表选择实例”中选择要统计的站点,最后点击“添加”按钮即可完成设置。
点击完“添加”关闭“添加计数器”设置框后,就可以看到该网站的连接数,曲线是黄色的
如果看得不明显的,可以将其他的计数器删除,在图表区里面右击,选择“属性”
将除了网站之后的计数器都删除
这样,在“系统监视器”图表区域中只看到一条曲线,它就是改网站的连接线曲线图。
当然并发连接数设置成为“不受限制”,监控的数值才是最准确的。
篇7:重启IIS怎么重启?重启iis命令详解Windows服务器操作系统
iis重启方法有几种方法,最常用的是直接在 在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”,其实还有其它的重启iis方法下面我来介绍一下,
WINDOWS提供WEB服务的IIS有时候会出现访问过大导致网站打不开,这时重启IIS是最好的选择。
1、界面操作
打开“控制面板”->“管理工具”->“服务”。找到“IIS Admin Service” 右键点击“重新启动” 弹出 “停止其它服务” 窗口,点击“是”。
2、Net 命令操作
点击 “开始”->“运行”,输入cmd 打开命令窗口;
输入 net stop iisadmin /y 回车停止IIS;
再输入 net start iisadmin 回车启动IIS;
再输入 net start w3svc 回车WEB服务,
3、IISReset 命令操作
点击 “开始”->“运行”,输入iisreset 回车。
4、通过“IIS管理器”重启
在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”。
5、重启IIS服务器,开始->运行->cmd (以下列出相关操作命令):
iisreset /RESTART 停止后启动
iisreset /START 启动IIS (如果停止)
iisreset /STOP 停止IIS (如果启动)
iisreset /REBOOT 重启电脑
iisreset /REBOOTonERROR 如果停止IIS失败重启电脑
iisreset /NOFORCE 不用强迫IIS停止
iisreset /TIMEOUT:X 在X秒后,IIS被强制停止,除非 /NOFORCE 参数给出. 内容来自
最方便的使用,当然你也可在CMD下运行:iisreset /start
篇8:windows IIS 日志文件如何查看及分析Windows服务器操作系统
本文章来告诉你关于windows IIS 日志文件如何查看及分析,有需要的同学可以参考一下本文章的一些经验之谈,
IIS文件的格式相关的基础知识
IIS 格式是固定的(不能自定义的) ASCII 格式,IIS 格式包括一些基本项目,如用户的 IP 地址、用户名、请求日期和时间、服务状态码和接收的字节数。另外,IIS 格式还包括详细的项目,如所用时间、发送的字节数、动作(例如,GET 命令执行的下载)和目标文件。这些项目用逗号分开,使得格式比使用空格作为分隔符的其他 ASCII 格式更易于阅读。时间记录为本地时间。
举例IIS日志文件:
--------------------------------------------------------------------------------
#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2007-05-18 05:00:51
2007-05-18 07:17:59 W3SVC739 60.28.240.139 GET www.111cn.net - 80 - 66.249.65.67 Mozilla/5.0+(compatible;+Googlebot/2.1;++www.google.com/bot.html) 200 0 0
--------------------------------------------------------------------------------
一、IIS日志格式注解
dateDE: 活动发生的日期。
timeDE: 活动发生的时间。
c-ipDE: 访问服务器的客户端 IP 地址。
cs-username:访问服务器的已验证用户的名称。这不包括用连字符 (-) 表示的匿名用户。
s-sitename: 客户端所访问的该站点的 Internet 服务和实例的号码。
s-computername:生成日志项的服务器名称。
s-ip:生成日志项的服务器的 IP 地址。
s-port:客户端连接到的端口号。
cs-method:客户端试图执行的操作(例如 GET 方法)。
cs-uri-stem:访问的资源;例如 Default.htm。
cs-uri-query:客户端正在尝试执行的查询(如果有)。
sc-status:以 HTTP或FTP术语表示的操作的状态。
sc-win32-status:用 Windows® 使用的术语表示的操作的状态。
sc-bytes:服务器发送的字节数。
cs-bytes:服务器接收的字节数。time-taken:操作花费的时间长短(亳秒)。
cs-version:客户端使用的协议(HTTP,FTP)版本,
对于 HTTP,这将是 HTTP 1.0 或 HTTP 1.1。
cs-host:显示主机头的内容。
cs(User-Agent):在客户端使用的浏览器。
cs(Cookie):发送或接收的 Cookie 的内容(如果有)。
cs(Referer):用户访问的前一个站点。此站点提供到当前站点的链接。
二、【IIS日志定义】
客户端IP地址:提出请求的客户机的 IP 地址。
用户名:访问服务器的已验证用户的名称。这不包括用连字符 (-) 表示的匿名用户。
日期:活动发生的日期。
时间:活动发生的时间。
服务和实例:网站实例显示为 W3SVC#;FTP 站点实例显示为 MSFTPSVC#,其中 # 是站点的实例。
计算机名:服务器的网络基本输入/输出系统 (NetBIOS) 名称。
服务器的 IP 地址:为请求提供服务的服务器的 IP 地址。
所用时间:操作花费的时间长短(亳秒)。
发送字节数:从客户端向服务器发送的字节数。
接收字节:客户端从服务器接收到的字节数。
服务状态码:HTTP 或 FTP 状态码。
Windows 状态码:用 Windows 使用的术语表示的操作的状态。
请求类型:服务器收到的请求类型(例如 GET 和 PASS)。
操作目标:操作目标 URL。
参数:传递给脚本的参数
三、【IIS常用状态码】
1、200 0 64 状态码
64的出现不代表百度要K你,但是64的大量出现确实会带来很大的问题,网络不可达,由于某种原因无法完全打开页面,或者网络不稳定这些原因,导致蜘蛛无法带回页面或者说不抓取该页面。
2、304 0 0
这个返回码代表蜘蛛访问的页面没有更新,和他之前来的时候是一样的,所以看到这个不要担心,蜘蛛来过,只不过你没有更新,所以他也不愿意带走这个页面。
3、404 0 0
这个是代表404页面,但是有个很严重的问题,这个返回码告诉我们,蜘蛛来到了404页面并把他带走了,崩溃~~~~,要是这样的话基本上你要倒霉了,因为你有太多的404,那么蜘蛛就会不断是抓取,不断的带走,这样会造成无数的重复页面,最终导致K站或者降权,正确的返回代码是404 0 64 这就代表蜘蛛没有抓取你这个页面。
4、500错误
500错误是服务器内部错误,是由程序的错误造成的,我不懂程序,但是500错误是会给你减分的,这点基本的逻辑都可以想的到,发现500错误,马上查看是哪个页面的,然后去修正以下错误吧!
5、302
在日志中发现302的返回码也是需要注意的,302为临时重定向,如果你是长期的将这个页面重定向到另一个页面,麻烦你使用301永久重定向,如果是302的话百度蜘蛛下次来还会访问这个页面,这样又会造成复制大量页面的问题,结果肯定是K,所以,抽空检查以下。
【温馨提醒IIS日志一般存放的路径:C:WINDOWSsystem32LogFilesW3SVC1】
★ Windows服务器怎么查看iis并发连接数Windows服务器操作系统
★ 在Windows Server 安装SSL证书(IIS 7.0)WEB服务器
IIS中php sendmail函数无法发送邮件Windows服务器操作系统(精选8篇)




