我在Debian上运行PHP 5.4。
PHP-cli已安装。
我的web项目目录结构是:
- /myproject
- /src
- /controller
- getProviders.php
- /model
- /public
- ClassLoader.php
我想创建一个cron作业执行getProviders.php每5分钟。这是我迄今为止所做的:*/5 * * * * /usr/bin/php /var/www/myproject/src/controller/getProviders.php
它不工作,因为我有一个require_once在getProviders.php需要ClassLoader.php,但他找不到它。require_once "../ClassLoader.php"
getProviders.php可以通过URL执行。
我对PHP开发并不陌生,但对围绕它配置服务器很陌生。我要怎么做才能成功呢?我猜我必须设置包含路径,但我不知道具体是什么。
提前感谢您的帮助。
在/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脚本的绝对值
为了确保require_once总是有效,您可以使用dirname(__FILE__)
+相对于getProviders.php的路径
在你的例子中,这将是:
require_once(dirname(__FILE__)."/../ClassLoader.php");
切换到正确的工作目录
您可以使用cd命令或在PHP脚本中使用chdir()函数来完成此操作。