用crontab跑php程序时,如何去调试,各人有各人的方法。我也有套方法,看一下,我是如何解决crontab执行不了php程序这个问题的。
一,php文件有没有执行权限
[root@linux cron]# ls -al |grep del
-rwxr-xr-x 1 zwh ftpgroup 494 10-20 16:42 del_redis.php
如果没有X,说明没有执行权限,当然也执行不了。如果你不知道你登录的用户所在的组是不是有权限,直接给所有组都加上权限就行了。方法如下:
查看复制打印?
[root@linux cron]# chmod +x ./del_redis.php
二,如果有执行权限了,还是执行不了
解决方法如下:
1,在php程序里面写log(例如:error_log()这个函数),这也是必须的,因为crontab定时执行,要是没有log,你怎么知道程序执行的结果怎么样。这样我们可以通过log来查看crontab执行的情况。
2,也可以直接在crontab里面,将执行的结果输出一个文件当中。然后在这个文件当中查看执行情况。例如:
查看复制打印?
*/10 * * * * /usr/local/php/bin/php /var/www/cron/del_redis.php >> /home/zhangy/cron.txt
3,用crontab来执行php,是不走apache,nginx,所以$_SERVER,$_ENV这类变量根本用不了。所以检查一下php代码中有没有这类变量,如果有拿掉。
4,php的相对路径问题
因为有思维定势在做怪,这个问题也是最容易忽视的。
查看复制打印?
include_once'./mysql.php';
当php代码中,用的是相对路径时,只有进入到那个目录下执行/usr/local/php/bin/php /var/www/cron/level_rank.php才能生效。这个问题我遇到过至少二次,但是再遇到时还是想不起来。
解决方法如下:
查看复制打印?
*/10 * * * * cd /var/www/cron && /usr/local/php/bin/php /var/www/cron/level_rank.php
或者
在php代码中用绝对路径
详细见
http://blog.51yip.com/php/1346.html
分享到:
相关推荐
总结起来,解决`crontab`无法执行PHP的策略包括:检查执行权限、编写日志、重定向输出、避免使用Web环境特有的变量以及处理好文件路径。遵循这些步骤,通常可以成功让`crontab`执行PHP脚本。对于PHP开发者来说,了解...
在Ubuntu系统中,使用Crontab执行PHP脚本是非常常见的需求,例如用于定时进行数据统计、自动备份数据库或者发送电子邮件等任务。本文将详细介绍如何在Ubuntu环境下利用Crontab来定时执行PHP脚本。 ##### 1. PHP脚本...
总结一下,Laravel crontab不执行的问题常常与PHP路径配置不当、Laravel命令定义错误、文件路径使用不当和crontab任务配置错误等因素有关。针对以上问题,我们应检查并修改PHP路径设置,确保Laravel命令正确无误,并...
以上知识点总结自文档内容,通过具体的实例和分析,详细地说明了在使用crontab执行PHP定时任务时遇到文件写入问题的可能原因,并提供了相应的解决策略。这些解决方法不光适用于解决文件写入问题,也有助于分析和解决...
然而,标准的`crontab`配置不支持每秒执行一次的任务,因为其最小的时间单位是一分钟。通常,`crontab`的格式如下: ```cron {minute} {hour} {day-of-month} {month} {day-of-week} {command} ``` 其中: - `...
### Linux下定时执行PHP脚本知识点详解 #### 一、Cron 介绍及用途 - **定义**:Cron 是 Linux 系统中用于管理周期性任务调度的守护进程(daemon),它允许用户将任务自动地安排在固定的时间点运行。 - **应用场景**...
cronManager是一个专为PHP设计的轻量级定时任务管理器,它允许开发者在不依赖操作系统级别的crontab服务的情况下,创建、管理和执行周期性任务。这个工具的核心特性是其纯PHP实现,这意味着它可以在任何支持PHP的...
1. **定时任务不执行** - 检查脚本路径是否正确。 - 检查脚本是否有执行权限。 - 确认 crond 服务是否正常运行。 ```bash ~# systemctl status cron ``` 2. **查看定时任务列表** - 查看当前用户的定时任务...
总之,`php-crontab` 是一个方便的 PHP 解决方案,它提供了在 PHP 应用内部创建和管理定时任务的能力,无需依赖系统的 `crontab`。通过 `pcntl_fork` 实现子进程创建,结合自定义的调度逻辑,可以在 PHP 环境中实现...
对于crontab执行任务时的环境变量问题,也可以通过在crontab任务前设置相应的环境变量来解决,比如设置PATH环境变量确保系统能找到正确的php命令。 总之,Linux下使用crontab实现定时PHP计划任务时可能会遇到多种...
您可能感兴趣的文章:PHP实现动态执行代码的方法PHP执行linux命令常用函数汇总crontab无法执行php的解决方法4种PHP异步执行的常用方式详解PHP执行定时任务的实现思路PHP定时执行任务的3种方法详解PHP执行SQL文件并将...
PHP 定时发送服务的解决办法 PHP 定时发送服务的解决办法是指在...PHP 定时发送服务的解决办法是通过使用 CronTab 或 bat 文件来实现定时任务的执行,这样可以让 PHP 脚本在特定的时间执行,从而实现定时发送的功能。
因为crontab执行的环境与直接在终端中执行可能有所不同,可能导致相对路径的解析出现问题。在这种情况下,解决方案是确保在包含其他文件之前,先调整工作目录至脚本所在目录: ```php $cur_dir = dirname(__FILE__)...
有时可能会遇到crontab无法执行PHP文件的问题,这可能是由于环境变量或者执行路径不正确导致的。可以尝试以下解决方案: - 使用 `curl` 访问PHP文件: ```bash 5 0 * * * /usr/bin/curl ...
1. **创建控制器**:在ThinkPHP项目中,创建一个专门用于定时任务的控制器,例如命名为`TaskController`,并在其中定义需要定时执行的方法。 2. **编写任务逻辑**:在`TaskController`的方法中编写具体的业务逻辑,...
在IT行业中,定时任务是许多系统不可或缺的一部分,用于执行周期性的、计划性的操作,例如数据备份、清理过期记录、发送通知等。Swoole是一个高性能的PHP扩展,提供了异步、并行处理的能力,而`swoole-crontab-...
在PHP中,可以通过编写shell脚本并调用`php`命令来执行PHP脚本,再利用crontab进行定时执行。 三、让web浏览器定时刷新 如果任务是由Web应用发起,可以通过让浏览器定时刷新页面来执行PHP脚本。这种方法是通过...
在大多数情况下,浏览器关闭,PHP 也就不执行了。大部分情况下都依赖于外部的一些小东西。 1. 固定时间 大多数服务器系统都是 windows 或 linux。linux:使用 CronTab 定时执行 php。 首先,进入命令行模式。在...