【问题标题】:"Running" a PHP file“运行”一个 PHP 文件
【发布时间】:2012-06-12 01:55:14
【问题描述】:

我认为这必须是一个非常简单的问题,但我没有为我想要完成的任务找到任何答案。

我有一个可以发送电子邮件的 PHP 文件。这部分有效。问题是,我需要这个 PHP 文件每 5 分钟“运行”一次。 我的问题不在于日程安排,我很确定我知道该怎么做。 我的问题是 PHP 文件的“运行”。 我的脑子里完全没有关于如何“执行”一个 PHP 文件的任何信息,而不是仅仅让它在浏览器中打开并到处吐出它的代码。 我知道这个 PHP 文件有效,因为当我在 Dreamweaver 中处理它时,我单击“发现”链接,其中显示“此文档的动态相关文件可能已更改,应该由服务器重新发现”它执行这个 PHP 文件,我收到了我的电子邮件。 我尝试过像THIS 这样的命令行,但它所做的只是吐出php 代码,就好像我在浏览器中运行它一样。实际上什么都没有发送。 有什么方法可以改变 PHP 文件本身的格式化方式,使其能够做到这一点? 当我单击“发现”使其工作时,Dreamweaver 正在做什么? 我觉得这应该是一件简单的事情,而且我不理解它的疯狂......

【问题讨论】:

  • cron 作业\windows 调度程序,php 命令行。 “php file.php”宾果游戏。 php.net/manual/en/features.commandline.php
  • 如果你在本地机器上运行它,你需要确保你有某种邮件发送程序配置为使用 php。我不确定 Windows 选项是什么。
  • 问题不在于发送的邮件。就像我说的,如果我在 Dreamweaver 中点击“发现”,邮件发送没有问题。

标签: php windows scheduled-tasks


【解决方案1】:

假设您使用默认设置安装 PHP,PHP 文件夹应该在您的 PATH 变量中。在这种情况下,您只需运行命令php filename.php

如果没有,您必须将命令定向到安装 PHP 的位置,可能类似于 "C:\Program Files\PHP\php.exe" filename.php - 无论哪种方式,您所做的只是在文件上调用 PHP 二进制文件。

【讨论】:

  • OP 提到已经在尝试 PHP CLI,但这似乎不起作用。
【解决方案2】:

你有选择。如果它是您可以通过浏览器访问的网页(并且按照您的预期发送电子邮件),您可以每五分钟通过 HTTP 请求该页面。就个人而言,我会使用 cURL(例如,curl.exe http://localhost/myfile.php)来做到这一点。您可以找到 Windows 二进制文件 here。你也可以使用 PowerShell 之类的。

如果这不是一个网页,或者如果您只是不想走这条路,您可以通过 PHP 的命令行界面 (CLI) 执行 PHP,正如您已经想到的那样。 C:\path\to\php.exe myfile.php 将执行您的代码并将输出吐出到 STDOUT。如果除了发送电子邮件之外一切正常——我猜你是通过mail 做的——问题可能出在你的 PHP 配置上。默认情况下,PHP 在these locations 中查找 php.ini 文件。您还可以通过-c option(例如,php.exe -c C:\path\to\php.ini myfile.php)明确告诉 PHP CLI 使用哪个 php.ini 文件。当然,您需要在 php.ini 中正确配置所有内容才能发送邮件。这可能是a bit trickier on Windows,而不是在您的普通 Linux 机器上,sendmail 可用。

【讨论】:

  • 好的,你似乎更接近一个对我有意义的答案。我试图运行的 PHP 文件根本不包含 HTML,所以当你在浏览器中“打开”它时,它会吐出一堆未格式化的 php 代码。是否有一种简单的方法来格式化当前的 php 文件,以便在浏览器中打开它时可以正确执行?
  • 就如在HTML标签中添加一样简单吗?
  • 当您在浏览器中打开文件时,您是否只是通过file:// 协议访问它,例如,通过右键单击并点击打开方式 > Firefox?您需要通过为 PHP 正确配置的 Web 服务器访问 PHP 文件。 Dreamweaver 通过 Discover 为您提供的 URL 大概就是您所需要的。
  • 哦,见鬼。只需在浏览器中打开它(使用 localhost/....)就可以正确运行它。我知道我在某种程度上是愚蠢的。这仍然不能解释为什么当我从 CLI 运行它时它不起作用......无论如何,谢谢你 georgefox。你的措辞让我想起了。
  • 使用 CLI 检查 php.ini 的内容。我的猜测是它在您的网络服务器上使用不同的配置,而不是通过 CLI。
猜你喜欢
  • 1970-01-01
  • 2011-03-16
  • 2012-06-24
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 2013-07-28
相关资源
最近更新 更多