CodeIgniter + PHP + CLI + Cron + cPanel / php 程式無法正常抓到 CLI 參數

這標題真難下
但是發生的狀況的確是在標題的狀況下才發生的

裝好跟隨法人的 code / db
crontab 也都設定好了

結果下午四點發現 cron 是有跑
但是為什麼都沒抓到資料

然後最神奇的是
為什麼從 shell 下 cron 的命令
都正常啊

但是如果用 cron 去跑, 把輸出導到 log
就會發現其實他都是用網頁都方式去開 php
找了半天
剛剛才找到方法

http://stackoverflow.com/questions/10322587/codeigniter-command-line-cron-cpanel

他說, 裝完 cpanel 的 VPS 會有兩個 php 執行檔
/usr/local/bin/php 跟 /usr/bin/php

但是只有 第一個是以 cli 的方式執行
第二個是以 fast CGI 的方式執行

所以如果跑到第二個, php 抓到的參數就會是 CGI 模式
所以就會回應網頁的內容…

實際去 shell 裡面執行這兩個檔案加上 -v 參數即可得知

/usr/local/bin/php -vPHP 5.3.14 (cli) (built: Jul 12 2012 18:32:06)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

$ /usr/bin/php -v
PHP 5.3.14 (cgi-fcgi) (built: Jul 12 2012 18:43:30)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

如果你希望你的 cron 跑到的是正確的那個
請下絕對路徑 /usr/local/bin/php
不然系統抓錯 php, 跑出來的就不一樣囉

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *