我使用PHP 5.4在Debian上运行Apache 安装了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开发的新手,但是围绕它配置服务器是新的。 我需要做些什么才能让它发挥作用。我猜我必须设置包含路径,但我不知道到底是什么。
提前感谢您的帮助。
答案 0 :(得分:2)
在/ 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脚本中的包含不是绝对值
答案 1 :(得分:1)
要确保require_once始终有效,您可以使用dirname(__FILE__)
+相对于getProviders.php的路径
在你的情况下,这将是:
require_once(dirname(__FILE__)."/../ClassLoader.php");
答案 2 :(得分:1)
更改为正确的工作目录。
您可以使用cd命令或使用chdir()函数在PHP脚本中执行此操作。