我使用以下脚本从名为this.php
我已经回归IMAP is not working in PHP以及Imap error on myname@mydomain.com but working on myname@gmail.com
我已经确认将opensll和imap扩展加载到Apache中。
我已确认文件的文件权限
在apache日志中,我得到的唯一错误是
[Tue Jun 17 23:42:12 2014] [warn] [client 24.120.116.118] mod_fcgid: read data timeout in 40 seconds
[Tue Jun 17 23:42:12 2014] [error] [client 24.120.116.118] Premature end of script headers: this.php
[Tue Jun 17 23:42:12 2014] [error] [client 24.120.116.118] File does not exist: /home/cesarbi1/public_html/500.shtml
无论我得到什么500.如果我用imap_open
注释掉这一行,那么页面就不会是500。
还有其他地方我可以找错吗?或者有人能告诉我我的剧本有什么问题吗?
<?php
/* connect to gmail */
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'username@gmail.com';
$password = 'password';
/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to your email account: ' . imap_last_error());
/* grab emails */
$emails = imap_search($inbox,'UNSEEN') or die('Cannot connect to your email account: ' . imap_last_error());
/* if emails are returned, cycle through each... */
if($emails) {
/* begin output var */
$output = '';
/* put the newest emails on top */
rsort($emails);
/* for every email... */
foreach($emails as $email_number) {
/* get information specific to this email */
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,$email_number,2);
/* output the email header information */
$output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
$output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
$output.= '<span class="from">'.$overview[0]->from.'</span>';
$output.= '<span class="date">on '.$overview[0]->date.'</span>';
$output.= '</div>';
/* output the email body */
$output.= '<div class="body">'.$message.'</div>';
}
echo $output;
}
/* close the connection */
imap_close($inbox);
?>
已解决更新
虽然这个问题与另一个问题具有相同的性质,但另一个问题并没有为我们这些没有位于fcgid.conf
文件夹中的/etc/httpd/conf.d/
的人提供解决方案。我也在编辑我的标题以更具体地解决错误。
我通过在文件httpd.conf
的末尾添加来解决我的问题Include "/etc/httpd/conf.d/cfgid.conf"
然后我在
中手动创建了该文件/etc/httpd/conf.d/fcgid.conf
并添加了以下代码。
<IfModule mod_fcgid.c>
FcgidIdleTimeout 3600
FcgidProcessLifeTime 3600
FcgidIOTimeout 3600
FcgidBusyTimeout 3600
</IfModule>
答案 0 :(得分:0)
你的错误是这样的:
[Tue Jun 17 23:42:12 2014] [warn] [client 24.120.116.118] mod_fcgid: read data timeout in 40 seconds
[Tue Jun 17 23:42:12 2014] [error] [client 24.120.116.118] Premature end of script headers: this.php
[Tue Jun 17 23:42:12 2014] [error] [client 24.120.116.118] File does not exist: /home/cesarbi1/public_html/500.shtml
我觉得错误在第一行:
mod_fcgid: read data timeout in 40 seconds
查看您的脚本,通过IMAP&amp; amp;然后在阅读电子邮件时直接输出到您的浏览器(我假设)?好吧,如果你有一个中等大小的电子邮箱,40秒就会很快被吃掉。
所以你可能需要在这里进入你的FastCGI
配置;假设您使用的是Linux设置:
/etc/httpd/conf.d/fcgid.conf
并将此行编辑为:
FcgidIOTimeout 120
相当于两分钟。对于实际的Web服务器应用程序来说仍然很高,但应该努力解决这个问题。只需更改该行,重启Apache&amp;再试一次。如果你在Ubuntu上,你会像这样重新启动Apache:
sudo service apache2 restart