php Moodle -< a>< /a>管理面板更新时重定向

ztyzrc3y  于 2023-04-04  发布在  PHP
关注(0)|答案(1)|浏览(101)

我有一个Moodle应用程序版本4.0.2在Apache Web服务器上,使用PHP v8.0。在以管理员身份登录或提交更改到管理面板后,应用程序将重定向到一个非常奇怪的URI,如“example.com/admin/”。
我搜索了很多,以修复这种行为,有人说这是一个权限问题,所以我改变了整个数据目录和应用程序目录到“0777”报告到官方文档。其他人说这是一个Apache配置错误。就是这样:

<VirtualHost 0.0.0.0:80>
  ServerName example.com
  Redirect / https://example.com
</VirtualHost>

<VirtualHost 0.0.0.0:443>
  ServerName example.com
  DocumentRoot /var/www/example.com/httpdocs
  ErrorLog ${APACHE_LOG_DIR}/error.log

  AcceptPathInfo On

  SSLEngine on
  SSLCertificateFile /etc/apache2/certificates/certificate
  SSLCertificateKeyFile /etc/apache2/certificates/certificate

  <Directory /var/www/example.com/httpdocs/>
    AllowOverride None
    Require all granted
  </Directory>
</VirtualHost>

深入了解应用程序的功能,在登录/提交后返回303,将您带到页面[https://example.com/admin/](https://example.com/admin/%5C)。
这些东西快把我逼疯了,因为我没有任何错误或信息日志,也没有来自Apache本身的有用输出。

rjee0c15

rjee0c151#

经过长时间的调试,我弄清楚了是谁把元素放到URL中的。Moodle有一个核心库,weblib.php,它有一个函数redirect。这个函数在你想要导航的URL上执行一组字符串操作,比如替换和清理。现在,如果你看一下这一行,这个库在clean_text('<a href="'.$encodedurl.'" />', FORMAT_HTML)模式上执行替换,从/^.*href="([^"]*)".*$/\\1-根据preg_replace function documentation-。打印出这一行的输出,它返回<a></a>,这是每个包上的每个index.php脚本上的函数redirect()的参数。评论这一行,将使一切工作得像一个魅力,而且,提高了很多性能。
我不太乐意对Moodle的库进行更新。你知道,它们应该准备好“按原样”使用。

相关问题