2016-05-11 33 views
1

我有一个名为“basic.txt”具有以下文本的文本文件mail()函数将无法识别消息变量是在PHP的cronjob

This
is a
test file.

我的cronjob运行我的PHP程序每分钟向我发送一封电子邮件。我收到的电子邮件没有问题,但不包含正文消息。这是我的PHP代码:

<?php 
    $string = ""; 
    $file = fopen("basic.txt", "r"); 
    $string .= file_get_contents("basic.txt"); 
    $fclose($file); 
    echo $string; // this is to test that in fact $string contains the text and it does 
    mail("examp[email protected]", "TEST", $string, "From: [email protected]"); 
?> 

为什么不是$字符串发送从文本文件中的文本,即使我可以用电子邮件的正文“回声$字符串”,它工作正常?

感谢

+0

你可以试试'$ string。= file_get_contents($ file);'和/或把你的'$ fclose($ file);'发送邮件后。似乎你可能会很快关闭文件。也检查文件权限。 –

+0

$ string。= file_get_contents($ file);不起作用,它说我需要在那里有文件名。 $ FCLOSE($文件);在邮件功能不起作用之后。 – Michael

+0

'file_get_contents()'不需要'fopen()',因此''fclose()'也不需要 – RiggsFolly

回答

2

摆脱这些2线:

$file = fopen("basic.txt", "r"); 
$fclose($file); 

既然你已经使用file_get_contents()其获取该文件的内容。

从生产我的服务器运行代码:

Fatal error: Function name must be a string in /path/to/file.php on line 5

你的代码是在你失败默默


因此而在OP的情况下,并按照建议,意见,要求文本文件的完整系统路径,而不得不建立新的cron作业。

+0

我已经做到了这一点,它仍然不会发送给我。我在上面留下了一条评论,解释发生了什么 – Michael

+0

@Michael是的,我看到了这一点,并回复了一条评论。是否有任何/你遗漏的代码,或者是“它”?检查你的日志,如果你有访问 –

+2

@Michael另一件事;这两个文件都与您正在执行的文件夹位于同一个文件夹内?如果不是,那么您需要为文本文件使用完整的系统路径,或者使用完整的系统路径。我很确定它与此有关。即:'/ var/user/public/folder/basic.txt' –