Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii控制器命名约定_Php_Linux_Apache_Yii - Fatal编程技术网

Php Yii控制器命名约定

Php Yii控制器命名约定,php,linux,apache,yii,Php,Linux,Apache,Yii,我有一个名为CategoryAdminController.php的控制器,可以通过Windows计算机上本地主机中的{siteurl}/categoryadmin/index访问该控制器。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是,当我将控制器重命名为CategoryadminController.php(以及相应的类名)时,它工作正常 有没有办法在加载页面的同时将原始名称保留在控制器中(即:CategoryAdminController.php) 根据Yii指

我有一个名为
CategoryAdminController.php
的控制器,可以通过Windows计算机上本地主机中的
{siteurl}/categoryadmin/index
访问该控制器。但是当我尝试在Linux平台上的远程服务器上启动它时,它无法加载页面。但是,当我将控制器重命名为
CategoryadminController.php
(以及相应的类名)时,它工作正常

有没有办法在加载页面的同时将原始名称保留在控制器中(即:
CategoryAdminController.php

根据Yii指南,这似乎是不可能的

有什么想法吗


谢谢

在Linux操作系统上,文件名区分大小写,但在Windows上不区分大小写。您是否尝试访问它:
{siteurl}/categoryAdmin/index

您可以使用重写URL。在您的情况下,可以使用以下代码:

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => FALSE,
    'rules' => array(
        'categoryadmin/<action:\w+>' => 'categoryAdmin/<action>'
    ),
),
'urlManager'=>数组(
“urlFormat”=>“路径”,
'showScriptName'=>FALSE,
'规则'=>数组(
“categoryadmin/”=>“categoryadmin/”
),
),

要保持控制器名称和操作名称的大小写并在Linux上工作,您需要在URL中的每个单词之间添加破折号:

"{siteurl}/category-admin/index"  -> CategoryAdminController->indexAction()

"{siteurl}/category-admin/my-way"  -> CategoryAdminControllern->myWayAction()
这将在LinuxWindows上运行

Windows读取文件和文件夹不区分大小写。并且经常隐藏一些错误

在Windows上开发时,常见的问题是。。。并创建一个链接
categoryadmin
,操作系统会很乐意为您提供这样的文件
CaTegoRYadmiNcontroller.php
忽略大小写

但是,当您在Linux上部署相同的代码和文件时,您将得到
File Not Found
异常。

所以,最好还是按惯例办事。

嗨,谢谢你的回复。是的,它只在Linux中区分大小写。是的,我试过{siteurl}/categoryAdmin/index,它很有效。但我需要它的工作,即使是小写的网址。(即:{siteurl}/categoryadmin/index)很抱歉我的回复太晚了,您可以在.htaccess文件中设置重写规则。例如:
RewriteRule^categoryadmin/index$/index.php?r=categoryadmin/index[NC,L,QSA]
这是正确的答案,应该选择+1同样适用于Yii2