问题描述
我正在尝试用 CakePHP 3.8 Router::url()
方法替换我所有的静态路由。
在我的本地环境中,当从 manage/lender-products/read/2
路由访问下面的代码时,我从下面的代码中得到了 /manage/lenders
的预期结果:
\Cake\Routing\Router::url(['controller' => 'Lenders','action' => 'index'])
但是,在生产 (bref.sh/AWS Lambda/PHP 7.4) 中,我得到了意外的 /manage/lender-products/read/manage/lenders
结果。
似乎在我的生产环境中,正在生成 URL 并在最终结果中包含当前页面的 URL。
解决方法
如果您没有为 App.base
配置选项设置自定义基本路径,CakePHP 将尝试根据 $_SERVER['PHP_SELF']
和 $_SERVER['DOCUMENT_ROOT']
自行找出可能的基本路径,因此其中一个或两个可能在您的 AWS 环境中包含意外值。
简单的解决方法是在您的 config/app.php
中手动设置基本路径。如果您的应用程序实际上并不位于公共子目录中(即,如果 webroot
是您的文档根目录),那么您应该将路径设置为空字符串,否则提供路径,例如 /my/app
(带有前导斜线,但没有尾部斜线!)。
另见