使用 PHP 和 Apache 创建一个 cron 作业
Creating a cron job with PHP and Apache
我在 Debian 上安装了 Apache 运行 PHP 5.4。
PHP-cli 已安装。
我的 web 项目的目录结构是:
- /myproject
- /src
- /controller
- getProviders.php
- /model
- /public
- ClassLoader.php
我想创建一个 cron 作业以每 5 分钟执行一次 getProviders.php。这是我目前为止的情况:
*/5 * * * * /usr/bin/php /var/www/myproject/src/controller/getProviders.php
它不起作用,因为我在 getProviders.php 中有一个 require_once 需要 ClassLoader.php,但他找不到它。
require_once "../ClassLoader.php"
getProviders.php 在通过 URL.
执行时有效
我对 PHP 开发并不陌生,但不熟悉围绕它配置服务器。
我该怎么做才能让它发挥作用。我猜我必须设置包含路径,但我不知道具体是什么。
在此先感谢您的帮助。
为了确保 require_once 始终有效,您可以使用 dirname(__FILE__)
+ 相对于 getProviders.php
的路径
在你的情况下,这将是:
require_once(dirname(__FILE__)."/../ClassLoader.php");
切换到正确的工作目录。
您可以使用 cd 命令或在 PHP 脚本中使用 chdir() 函数执行此操作。
在 /usr/sbin 中创建这样的 shell 脚本(例如:getProviders)
#!/bin/bash -x
cd /var/www/myproject/src/controller/
php getProviders.php
授予权限
chmod a+x /usr/sbin/getProviders
在/etc/crontab
*/5 * * * * root /usr/sbin/getProviders
问题可能是由于 php 脚本中包含的内容不是绝对值
我在 Debian 上安装了 Apache 运行 PHP 5.4。
PHP-cli 已安装。
我的 web 项目的目录结构是:
- /myproject
- /src
- /controller
- getProviders.php
- /model
- /public
- ClassLoader.php
我想创建一个 cron 作业以每 5 分钟执行一次 getProviders.php。这是我目前为止的情况:
*/5 * * * * /usr/bin/php /var/www/myproject/src/controller/getProviders.php
它不起作用,因为我在 getProviders.php 中有一个 require_once 需要 ClassLoader.php,但他找不到它。
require_once "../ClassLoader.php"
getProviders.php 在通过 URL.
执行时有效我对 PHP 开发并不陌生,但不熟悉围绕它配置服务器。 我该怎么做才能让它发挥作用。我猜我必须设置包含路径,但我不知道具体是什么。
在此先感谢您的帮助。
为了确保 require_once 始终有效,您可以使用 dirname(__FILE__)
+ 相对于 getProviders.php
在你的情况下,这将是:
require_once(dirname(__FILE__)."/../ClassLoader.php");
切换到正确的工作目录。
您可以使用 cd 命令或在 PHP 脚本中使用 chdir() 函数执行此操作。
在 /usr/sbin 中创建这样的 shell 脚本(例如:getProviders)
#!/bin/bash -x
cd /var/www/myproject/src/controller/
php getProviders.php
授予权限
chmod a+x /usr/sbin/getProviders
在/etc/crontab
*/5 * * * * root /usr/sbin/getProviders
问题可能是由于 php 脚本中包含的内容不是绝对值