CakePHP - Router::url()生成相对于当前页面的url

oalqel3c  于 2022-11-12  发布在  PHP
关注(0)|答案(1)|浏览(207)

我正在尝试用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。

3vpjnl9f

3vpjnl9f1#

如果您没有为App.base配置选项设置自定义基路径,CakePHP将尝试根据$_SERVER['PHP_SELF']$_SERVER['DOCUMENT_ROOT']自己计算出可能的基路径,因此很可能其中一个或两个包含AWS环境中的意外值。
简单的解决方法是手动设置config/app.php中的基路径。如果你的应用程序实际上并不在公共子目录中(例如webroot是你的文档根目录),那么你应该将路径设置为空字符串,否则就提供路径,如/my/app(带有前导斜杠,但不带尾部斜杠!)。
另请参阅

*操作手册〉配置〉常规配置

相关问题