使用 yaf 框架做一個訊息佇列,執行命令的時候一直找不到對應的控制器,爬坑2小時,原來是Git Bash
的鍋。
開發環境
windwos 10
問題重現
/root_path/shell/index.php
<?php
if (empty($argv[1])) {
exit('command error');
}
ini_set('display_errors', 'on');
error_reporting(E_ALL);
define('IS_CLI', true);
define('APP_PATH', realpath(__DIR__.'/../'));
date_default_timezone_set('Asia/Shanghai');
require_once APP_PATH.'/vendor/autoload.php';
$app = new Yaf_Application(APP_PATH.'/conf/application.ini', 'common');
$app->bootstrap()->getDispatcher()->dispatch(new Yaf_Request_Simple());
在Git Bash
中執行命令php index.php request_uri=/cli/Notify/login
輸出如下
Failed opening controller script D:\wnmp\www\bitell\Middleman/app\controllers\:.php: No such file or directory
將index.php
改成這樣
<?php
$request = new Yaf_Request_Simple();
print_r($request);
die;
再執行命令 php index.php request_uri=/cli/Notify/login
輸出如下
Yaf_Request_Simple Object
(
[module] =>
[controller] =>
[action] =>
[method] => CLI
[params:protected] => Array
(
)
[language:protected] =>
[_exception:protected] =>
[_base_uri:protected] =>
[uri:protected] => :/Program Files/Git/cli/Notify/login
[dispatched:protected] =>
[routed:protected] =>
)
uri
尋找 Git Bash
的安裝目錄去了,所以找不到我的控制器了
在 Windows PowerShell
中 執行命令 php index.php request_uri=/cli/Notify/login
輸出如下
Yaf_Request_Simple Object
(
[module] =>
[controller] =>
[action] =>
[method] => CLI
[params:protected] => Array
(
)
[language:protected] =>
[_exception:protected] =>
[_base_uri:protected] =>
[uri:protected] => cli/Notify/login
[dispatched:protected] =>
[routed:protected] =>
)
還原index.php
就可以正常使用了,爬出來了
本作品採用《CC 協議》,轉載必須註明作者和本文連結