标签:设置 str substr src ima sha tee php index
遇到的问题是:在thinkphp5.0框架下,出现错误----模块不存在:404?
问题跟踪分析:
不管是打断点还是var_dump,都可以分析到 Request.php 下的函数
/** * 获取当前请求URL的pathinfo信息(含URL后缀) * @access public * @return string */ public function pathinfo() { if (is_null($this->pathinfo)) { if (isset($_GET[Config::get(‘var_pathinfo‘)])) { // 判断URL里面是否有兼容模式参数 $_SERVER[‘PATH_INFO‘] = $_GET[Config::get(‘var_pathinfo‘)]; unset($_GET[Config::get(‘var_pathinfo‘)]); } elseif (IS_CLI) { // CLI模式下 index.php module/controller/action/params/... $_SERVER[‘PATH_INFO‘] = isset($_SERVER[‘argv‘][1]) ? $_SERVER[‘argv‘][1] : ‘‘; } // var_dump($_SERVER);exit(); // 分析PATHINFO信息 if (!isset($_SERVER[‘PATH_INFO‘])) { foreach (Config::get(‘pathinfo_fetch‘) as $type) { if (!empty($_SERVER[$type])) { $_SERVER[‘PATH_INFO‘] = (0 === strpos($_SERVER[$type], $_SERVER[‘SCRIPT_NAME‘])) ? substr($_SERVER[$type], strlen($_SERVER[‘SCRIPT_NAME‘])) : $_SERVER[$type]; break; } } } $this->pathinfo = empty($_SERVER[‘PATH_INFO‘]) ? ‘/‘ : ltrim($_SERVER[‘PATH_INFO‘], ‘/‘); } return $this->pathinfo; }
在 "分析PATHINFO信息" 中看到 断点输出 超全局变量 $_SERVER
从代码逻辑上来分析,pathinfo的取值 是从 超全局变量中$_SERVER 以这些 [‘ORIG_PATH_INFO‘, ‘REDIRECT_PATH_INFO‘, ‘REDIRECT_URL‘](从Config配置里获取)为key的值中获取,一旦获得值,终止,从上图可以看出,REQUEST_URI为key的值符合我们的逻辑,故有的解决方法是在配置的数组里加上REQUEST_URI,放在第一位,我最初也是这样来解决这个问题的。
在设置好后,确实页面可以访问了,
但是返回的状态码竟然是404.
看来问题还是得回到超全局变量 $_SERVER 来,为什么他的这些参数[‘ORIG_PATH_INFO‘, ‘REDIRECT_PATH_INFO‘, ‘REDIRECT_URL‘]是 404,延伸到 超全局变量 $_SERVER 是怎么来的?
超全局变量 $_SERVER 是怎么来的 这个问题,我也不是很了解,只是在网上了解到和Apach或者Nginx有关(看你的服务部署情况),我的是Apach。
thinkphp和Apache的配置相关的话,就是public下的.htaccess文件
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^(Public/)]+.*)$ index\.php [L,E=PATH_INFO:$1] </IfModule>
和thinkphp官方的对比下,
https://www.kancloud.cn/manual/thinkphp5/177576
RewriteRule ^([^(Public/)]+.*)$ index\.php [L,E=PATH_INFO:$1]
就是这个的问题,改为
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
这个问题就从根本上解决了!!其他的不用去改变。。。
标签:设置 str substr src ima sha tee php index
原文地址:https://www.cnblogs.com/pianxiangongzi/p/11870713.html