linux nginx maccms管理后台无法进入页面不存在和验证码不显示的问题

news2025/1/6 13:26:37

windows中运行maccms非常顺利,轻松搭建了。并一切正常。而我在linux中搭建缺遇到了一个非常奇怪的问题。进入管理后台,明明"admin.php"(比如重命名成a.php)的页面是存在的,访问时缺提示页面不存在!稍后就自动跳到首页了。
在这里插入图片描述

环境

操作系统:Ubuntu 20.04.1 LTS
nginx version: nginx/1.18.0 (Ubuntu)
PHP 7.4.3-4ubuntu2.28 (cli) (built: Dec 13 2024 13:46:46) ( NTS )

nginx的配置如下:

server {
    listen       80;
    server_name  video.demo.cool;
    root /etc/nginx/WWW/video.demo.cool;

   
	location / {
		index index.php index.html error/index.html;
 	 	if (!-e $request_filename) {
	        rewrite ^/index.php(.*)$ /index.php?s=$1 last;
	        rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
	        rewrite ^/api.php(.*)$ /api.php?s=$1 last;
	        rewrite ^(.*)$ /index.php?s=$1 last;
	        break;
   		}
		autoindex off;
	}
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}


我的搭建详情见:
《Ubuntu 20.04.1 LTS搭建nginx + php7.4运行环境》
https://blog.csdn.net/lxyoucan/article/details/144850572

原因分析

  1. 我怀疑伪静态规则的设置可能没有生效或者出现错误了,官方的示例如下:
location / {
 if (!-e $request_filename) {
        rewrite ^/index.php(.*)$ /index.php?s=$1 last;
        rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
        rewrite ^/api.php(.*)$ /api.php?s=$1 last;
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
   }
}
  1. 可能是admin.php相关的代码运行报错了,当作404页面处理了。

探索实验

伪静态规则测试

我的测试方法很简单,因为windows中是可以正常运行的,我故意把windows中的nginx中的伪静态规则删除测试现象

我在windows中的nginx的配置修改前如下:

server {
        listen        22427;
        server_name  maccms.demo.com;
        root   "D:/app/maccms10-2024.1000.4045";
        location / {
            index index.php index.html error/index.html;
			if (!-e $request_filename) {
					rewrite ^/index.php(.*)$ /index.php?s=$1 last;
					rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
					rewrite ^/api.php(.*)$ /api.php?s=$1 last;
					rewrite ^(.*)$ /index.php?s=$1 last;
					break;
			} 
            autoindex  off;
        }
        location ~ \.php(.*)$ {
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}

我去掉

		if (!-e $request_filename) {
					rewrite ^/index.php(.*)$ /index.php?s=$1 last;
					rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
					rewrite ^/api.php(.*)$ /api.php?s=$1 last;
					rewrite ^(.*)$ /index.php?s=$1 last;
					break;
			} 

经测试并不会出现同样的现象,所以暂时可以排除。

程序报错导致

看来是程序报错导致的,但是程序报错日志我不清楚在哪里查看。

nginx不行就试试Apache吧

搭建LAMP环境,所谓的LAMP指的Linux+Apache+Mysql+PHP. 其中,你的操作系统ubuntu就是Linux。Apache是http服务器,浏览器通过服务器(也就是你的VPS)上的apache提供的服务才能获取到网页资源,从而显示在你的电脑屏幕上。Mysql是数据库,你的网站(这里即是苹果CMS)动态运行时所存取的数据都是由数据库来管理的。PHP与Apache相互配合为用户提供动态的网页,我们要安装的苹果CMS就是php语言编写的,他的运行必须依赖于PHP环境。

因为nginx我是必须要用的,我仅是用apache运行php项目,所以我要把apache中的80端口修改成其他的。

  • 主配置文件:/etc/apache2/apache2.conf
  • 站点配置文件:/etc/apache2/sites-available/ 和 /etc/apache2/sites-enabled/
  • 模块配置文件:/etc/apache2/mods-available/ 和 /etc/apache2/mods-enabled/
  • 环境配置文件:/etc/apache2/envvars
  • 端口配置文件:/etc/apache2/ports.conf
  • 全局配置文件:/etc/apache2/conf-available/ 和 /etc/apache2/conf-enabled/

我把80端口修改成22429

vim /etc/apache2/ports.conf
Listen 22429

然后我把maccms的程序上传到/var/www/html目录,设置一下目录权限

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

这次发现后台可以进了,但是又遇到了一个新的问题,登录的验证码无法显示了。
在这里插入图片描述
这条路成功一半,并没有完美解决。

nginx无法进入后台的最终解决办法

经过对比windows和linux的nginxs配置的差异,最终我把Linux的配置修改成

server {
    listen       80;
    server_name  vipvideo.demo.cool;
    root /etc/nginx/WWW/vipvideo.demo.cool;

   
	location / {
		index index.php index.html error/index.html;
 	 	if (!-e $request_filename) {
        rewrite ^/index.php(.*)$ /index.php?s=$1 last;
        rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
        rewrite ^/api.php(.*)$ /api.php?s=$1 last;
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
   		}
		autoindex off;
	}
	
	 location ~ \.php(.*)$ {
			fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}

问题得到解决了。但是验证码还是无法显示。。。
在这里插入图片描述

解决验证码不显示的问题

我在网上找了一圈,好多都说把验证码关掉,或者因为v10使用的是thinkphp开发,修改php.ini文件中 session.save_path = “/tmp”。
以上方法我都尝试了,并没有解决我的问题。
最终解决的方法是安装gd

apt-get install php7.4-gd 

参考:https://www.javazxz.com/thread-1005-1-1.html
终于搞定了,太折腾了。

在这里插入图片描述

参考

https://blog.csdn.net/wanyizhilu/article/details/104684728

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单使用linux

1.1 Linux的组成 Linux 内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统,如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…

pikachu靶场--目录遍历和敏感信息泄露

pikachu靶场—目录遍历和敏感信息泄露 目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再…

MyBatis-plus sql拦截器

因为业务需求,重新写了一套数据权限。项目中用的是mybtis-plus,正好MyBatis-Plus提供了插件数据权限插件 | MyBatis-Plus,那就根据文档来实现这个需求。 实现: 实现MultiDataPermissionHandler 首先创建MultiDataPermissionHan…

硬件-射频-PCB-常见天线分类-ESP32实例

文章目录 一:常见天线1.1 PCB天线①蓝牙模块的蛇形走线-天线②倒F天线-IFA:③蛇形倒F天线-MIFA④立体的倒F天线-PIFA 1.2 实例示意图1.21 对数周期天线(LPDA):1.22 2.4GHZ的八木天线:1.23 陶瓷天线:1.24 外接天线: 二&…

Gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置

gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置 1. 说明2. 实操(以docker执行器为例)2.1 修改默认的builds_dir2.1.1 调整gitlab-runner的配置文件2.1.2 CI文件 2.2 启用custom_build_dir2.2.1 调整gitlab-runner的配置文件2.2.2 CI文件…

WPF+Prism View与ViewModel绑定

1、开发环境,Win10VS2022.NET8Prism.DryIoc(9.0.537)或Prism.Unity。 2、通过NuGet安装Prism.DryIoc(9.0.537)或Prism.Unity。 2.1、创建ViewModels文件夹用于存放ViewModel文件、创建Views文件夹存放View文件。 将…

av1学习笔记(一):码流的整体框架

av1学习笔记(一):码流的整体框架 目录 av1学习笔记(一):码流的整体框架1. 码流结构分析:2. OBU信息分析2.1 obu_header2.2 obu_size2.3 drop_obu2.4 sequence_header_obu2.5 temporal_delimiter…

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式:在HAL库中,I2C有专门对存储器外设设置的库函数 I2C(一):存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Ansys Discovery 中的网格划分方法:探索模式

本篇博客文章将介绍 Ansys Discovery 中可用于在探索模式下进行分析的网格划分方法。我们将在下一篇博客中介绍 Refine 模式下的网格划分技术。 了解 Discovery Explore 模式下的网格划分 网格划分是将几何模型划分为小单元以模拟系统在不同条件下的行为的过程。这是通过创建…

MySQL秘籍之索引与查询优化实战指南

MySQL秘籍之索引与查询优化实战指南 目录 MySQL秘籍之索引与查询优化实战指南相关阅读索引相关EXPLAIN 版本 1. 初级篇1.1 【练体术】基础1.1.1 库操作1.1.1 表操作创建一个表增加表字段 1.1.2 增删改插入一条数据删除一条数据更新一条数据库 1.1.3 查询查询所有数据条件查询&a…

MySQL8.0复制原理和部署配置步骤

1. mysql 主从复制原理 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成…

智联视频超融合平台:电力行业的智能守护者

文章目录 一、远程实时监控与设备状态监测二、提高应急响应能力三、实现无人值守与减员增效四、保障电力设施安全与防范外部破坏五、提升电网运行管理效率与决策科学性六、助力电力企业数字化转型与智能化发展七、智联视频超融合平台 在当今数字化浪潮下,视频联网平…

上传本地项目或文件到SVN服务器(图片讲解,超简单)

上传本地项目或文件到SVN服务器(图片讲解,超简单) 1、使用TortoiseSVN2、输入SVN远程仓库地址3、添加文件或文件夹 需求:将本地的文件上传到SVN服务器上指定路径。前提:已经安装好TortoiseSVN 1、使用TortoiseSVN 右…

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路,深入理解 RISC-V 指令集的子集功能实现,掌握数字电路设计与实现的基本流程,包括指令解析、部件组合、电路设计以及功能仿真等环节,同时培养verilog HDL编程能力和…

ROS功能包开机自启动(2步解决)

为了实现小车在开机后能自动启动相关功能模块需要解决两个问题 1.准备启动脚本文件加载对应的rosnode和roslaunch,整合相关节点按需要顺序进行,防止报错 2.设置开启启动脚本相关内容 既然是自启动,不能避免USB数据传输的一些问题&#xff…

【ArcGISPro/GeoScenePro】解决常见的空间参考和投影问题

修复空间参考缺失的图像 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 查看属性坐标 查看属性范围 范围值并不是零或接近于零。 这意味着栅格具有范围,因此其已正确进行

NLP 中文拼写检测纠正论文-08-Combining ResNet and Transformer

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼…

【paddle】初次尝试

张量 张量是 paddlepaddle, torch, tensorflow 等 python 主流机器学习包中唯一通货变量,因此应当了解其基本的功能。 张量 paddle.Tensor 与 numpy.array 的转化 import paddle as paddle import matplotlib.pyplot as plt apaddle.to_t…

如何在谷歌浏览器中使用屏幕录制功能

在日常使用电脑的过程中,我们经常会遇到需要记录屏幕操作的情况。无论是制作教学视频、保存游戏过程还是记录会议内容,谷歌浏览器的屏幕录制功能都能帮助我们轻松实现这些需求。那么,如何在谷歌浏览器中启用并使用屏幕录制功能呢?…

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支,专注于提升MGR(MySQL Group Replication)的可靠性及性能。乐维监控平台可以有效地监控GreatSQL,帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理,收集数据库性…