事情是這樣的,我不能建立自己的控制器,只能使用預設的 /Home/Controller/IndexController/Index/index 方法下的邏輯。
意思就是說即使我在 /Home/Controller/IndexController/Index/hello 訪問,依然不生效,以下是代碼:
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$this->show('
:)
歡迎使用 ThinkPHP!
[ 您現在訪問的是Home模組的Index控制器 ]','utf-8');
}
public function hello(){
echo 'hello';
}
}
不過我修改了慣例配置裡面的 預設模組 / 預設控制器 / 預設操作,改成自己的控制器與操作,這樣是可以使用自己的控制器的,那就是我只能使用一個控制器了!?求各位php大神指教!是我的配置環境有問題嗎?
我的controller名字等沒有寫錯,我下載了別人聲稱能啟動並執行代碼,到我這邊就不可以了!
我用的是thinkphp 3.2 版本
回複討論(解決方案)
最近在用3.1.3 沒遇到你的情況 定義自己的控制器 只要繼承架構的Action 應該不會有問題的 樓主在仔細看下 自己安裝到使用 有沒配置過什麼特殊的操作
3.2版本開始就沒有action了,用controller代替~~~我沒有改了什麼配置啊,莫名其妙
看上去你什麼也沒動
那麼訪問應是
http://localhost/home/index/index
http://localhost/home/index/hello
看上去你什麼也沒動
那麼訪問應是
http://localhost/home/index/index
http://localhost/home/index/hello
是的,我也原來這樣以為,實際上兩個URL的訪問結果都一樣,都是http://localhost/home/index/index,這是我迷惑的地方。
我嘗試了,如果在慣例設定檔裡配置了,是可以使用http://localhost/home/index/hello的。另外,在入口檔案index.php中也可以通過常量的設定BIND_MODULE BIND_CONTROLLER BIND_ACTION指定的預設模組 控制器 操作
可惜,我就是用不到自己的控制器,自己的操作,好暈啊!!!望各大神幫忙!
終於還是自己解決了問題,看了ThinkPHP裡面的原始碼,發現用 http://localhost:9999/index.php?c=Read&a=index 這樣的URL是能正常訪問我自己的控制器和操作的,那問題就在於我的thinkphp不支援PATHINFO方式了!
為什麼偏偏我的不支援呢?再看3.2的開發手冊,原來是低版本的nginx不支援,如何解決參考以下文章
http://www.smzdy.com/nginx-kai-qi-pathinfo-di-ling-yi-zhong-xie-fa-yi-jing-yong.html
by the way,我的nginx 版本是1.1.19,的確有點舊了!