我有一个从批处理文件运行的php脚本。测试这是否有效的最佳方法是什么。
目前,BAT文件包含以下内容:
c: ''php''php.exe-f c:''www''somedomain''customcode''automed_scripts''simple_email.php
我试着双击批处理文件,看看它是否会运行php脚本,但里面的代码似乎什么都没做。
对该文件中使用的样本进行编码:
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Mickey Mouse'n";
fwrite($myfile, $txt);
$txt = "Minnie Mouse'n";
fwrite($myfile, $txt);
fclose($myfile);
和
$headers = 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
$headers .= 'From: myemail@domain.com' . "'r'n" .
'Reply-To: anotheremaik@someoneelse.com' . "'r'n" .
'X-Mailer: PHP/' . phpversion();
mail('anotheremaik@someoneelse.com',"hello test","testing msg",$headers);
电子邮件未发送,服务器上也未创建文件。。。有没有更好的方法来测试或输出一些调试数据?
首先,在不使用批处理文件的情况下从命令行运行脚本,以确保其正常工作。
如果脚本是从命令行运行的,而不是从批处理运行的,那么批处理文件的设置可能有问题。这在我看来很好,但可能有一些特定于您的设置、操作系统和/或权限的东西,这里不清楚。
当将其作为计划任务运行时,您可以使用退出代码来确定脚本是否成功完成。我个人从未在PHP和windows中尝试过这种方法,但您可能可以使用exit(0);用于成功执行,并退出(1);执行失败。这个结果可能会显示在计划任务的退出代码列中(同样,我对此不确定)。
一般来说,出于调试目的,最好将输出记录到文件中,因为您可以获得有关问题的上下文信息(而不仅仅是成功/失败状态)。您可以使用PHP的error_log()方法来写入现有的日志文件。您可能需要编辑php.ini文件以设置log_errors=On和error_log=syslog。在Windows上,我相信这将导致PHP记录到事件日志中。