2025年5月

一个外观漂亮、易于使用的照片管理系统。上传、管理和共用来自本地应用程式的照片。

1、实现条件:

  • 安装Nginx (或者其他网页伺服器)
  • 安装PHP
  • MySql (这里是MariaDB)

参考这篇文章:赚钱宝2代安装lnmp

2、下载lychee相册文件:

cd /media/sda/www/

wget https://github.com/electerious/Lychee/archive/refs/tags/v3.1.6.tar.gz && tar xzv -f v3.1.6.tar.gz && mv Lychee-3.1.6/ lychee &&rm -rf  v3.1.6.tar.gz&&chown www-data:www-data -R ./lychee/

3、Nginx的lychee配置:

修改nano /etc/nginx/site-enabled/default文件。

4、启动Nginx服务

systemctl restart nginx

在浏览器中打开http://IP设置数据库等相关信息

添加权限:

chmod 777 /mnt/sda/www/html/lychee/data

chmod 777 /mnt/sda/www/html/lychee/uploads

5、完成安装

在浏览器中打开http://IP

注意:在上传照片的过程中出现了如下问题:

1、解决Request entity too large问题

参考网址:https://www.cnblogs.com/wangyuehan/p/10740810.html

根据经验判断应该是上传文件大小被限制了,检查了应用配置是10M,把它设置成100M,重启服务也不能解决问题。

原来我们的tomcat是通过nginx发现服务代理的,问题就出现nginx服务器上,原来nginx默认长传文件的大小是1M,可在nginx的配置中修改。

解决方法:

  • 1、打开nginx服务的配置文件nginx.conf, 路径一般是:/etc/nginx/nginx.conf。
  • 2、在http{}中加入client_max_body_size 100m,我这里配置的是100M。
    http {

client_max_body_size 100m;

include       mime.types;

default_type  application/octet-stream;

  • 3、重新nginx服务。

另外php.ini也限制的http上传文件的大小!参考:https://jingyan.baidu.com/article/4853e1e5bc96af1909f7269e.html

nano /etc/php/7.3/fpm/php.ini

upload_max_filesize = 2M改为upload_max_filesize = 100M

systemctl restart php7.3-fpm

2、the server responded with a status of 504 (Gateway Time-out)

解决方法:

ngixn反向代理上传文件时间较长浏览器报错Failed to load resource: the server responded with a status of 504 (Gateway Time-out)修改/etc/nginx/nginx.conf文件:

我针对某个接口设置了超时设置 proxy_send_timeout 600s;proxy_send_timeout 600s; proxy_read_timeout 600s;  三个属性,都设置为10分钟超时

http {

   client_max_body_size 50M;
   proxy_read_timeout 300;
   proxy_connect_timeout 300;
   proxy_send_timeout 300;

}

调整PHP配置

检查并调整PHP的配置文件(通常是php.ini):

  • upload_max_filesize:允许上传的最大文件大小。
  • post_max_size:POST数据的最大大小,包括文件上传。
  • max_execution_time:脚本允许的最大执行时间(秒)。
  • max_input_time:脚本允许的最大输入时间(秒)。

例如:

upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 300
max_input_time = 300

重启php服务

systemctl restart php7.3-fpm

WordPress钩子是其插件和主题开发中的重要机制,用于在WordPress执行过程中的特定点插入自定义代码。

钩子的应用

  • 插件开发:插件可以利用钩子在WordPress加载、用户登录、文章保存等各种事件发生时执行特定操作。例如,通过 wp_login 钩子,在用户登录后记录登录信息;利用 the_content 钩子,在文章内容显示前对内容进行过滤或添加自定义信息。
  • 主题开发:主题开发者可使用钩子来修改主题的外观和行为。比如,通过 wp_head 钩子在HTML头部插入自定义的CSS或JavaScript代码;利用 body_class 钩子为页面的 body 标签添加自定义类,以便根据不同页面类型应用特定样式。
  • 功能扩展:钩子还能用于扩展WordPress的核心功能。比如,使用 post_edit_form_tag 钩子修改文章编辑表单的提交属性,或者通过 widgets_init 钩子注册自定义小部件。

核心思想

  • 解耦与可扩展性:允许不同的功能模块(如插件和主题)在不修改WordPress核心代码的情况下,与核心系统进行交互和扩展。这样使得WordPress具有高度的可扩展性和灵活性,各个功能模块可以独立开发和维护,提高了代码的复用性和可维护性。
  • 事件驱动编程:基于事件驱动的编程模型,WordPress在执行过程中会触发各种事件,如页面加载、用户操作等。钩子就是将自定义代码与这些事件进行绑定,当事件发生时,相应的钩子函数就会被执行,从而实现对WordPress行为的定制和扩展。

WordPress主题开发存在以下一些难点:

模板结构与层次理解

  • WordPress具有复杂的模板层次结构,不同页面类型对应不同模板文件。如 single.php 用于单篇文章页面, page.php 用于页面, archive.php 用于归档页面等。开发者需清楚各模板的作用及加载顺序,才能准确实现页面布局和显示逻辑。若对其理解不深,可能导致页面显示异常或无法按预期呈现内容。

与WordPress核心及插件的兼容性

  • 主题需与WordPress核心版本及各类插件兼容。WordPress不断更新,新功能和特性可能影响主题的运行。同时,众多插件也会与主题交互,若主题未考虑兼容性,可能与某些插件冲突,导致页面错乱、功能失效等问题。

响应式设计与跨设备适配

  • 如今,用户通过多种设备访问网站,主题需具备良好的响应式设计,以适应不同屏幕尺寸和分辨率。这要求开发者精通CSS媒体查询等技术,对各种设备的显示效果进行细致调整,确保在手机、平板、电脑等设备上都能呈现最佳视觉效果和用户体验。

性能优化

  • 优化主题性能至关重要,包括代码优化、图片优化、缓存设置等。减少HTTP请求、压缩代码、合理使用CSS和JavaScript等,都需要开发者具备相关性能优化知识和经验。否则,可能导致网站加载速度慢,影响用户体验和搜索引擎排名。

个性化与定制需求

  • 不同用户对网站的个性化需求各异,开发者需提供灵活的定制选项,如颜色、字体、布局等方面的自定义功能。这需要在主题开发中设计合理的设置界面和逻辑,让用户能方便地进行个性化调整,同时又要保证主题的稳定性和易用性。

WordPress的主题开发和插件开发需要掌握以下知识及学习方法:

主题开发

  • HTML和CSS:用于构建页面结构和设计样式,要熟悉各种标签和属性,以及CSS布局和样式规则。
  • PHP基础:理解PHP的基本语法、变量、函数、数组等,以便在主题中进行动态内容的处理和输出。
  • WordPress模板结构:了解WordPress的模板层次结构,如 index.php 、 header.php 、 footer.php 等模板文件的作用,以及如何通过模板文件来显示不同的页面内容。
  • WordPress函数和钩子:掌握常用的WordPress函数,如 get_header() 、 the_content() 等,用于获取和显示网站的各种元素。同时,要了解钩子(Hooks)的概念,通过钩子可以在WordPress的特定事件发生时插入自定义代码。

插件开发

  • PHP面向对象编程:插件开发通常采用面向对象的编程方式,需要熟悉类、对象、方法、属性等概念,以及面向对象的设计模式。
  • WordPress API:深入了解WordPress的插件API,包括如何注册自定义的功能、菜单、设置页面等,以及如何与WordPress的数据库进行交互。
  • 安全和最佳实践:了解插件开发中的安全问题,如防止SQL注入、XSS攻击等,遵循WordPress的最佳实践,确保插件的稳定性和兼容性。

学习方法和入手点

  • 官方文档:WordPress官方网站的文档非常全面,涵盖了主题开发和插件开发的各个方面,是学习的重要资源。
  • 在线教程和课程:可以在网上搜索相关的教程和课程,如慕课网、网易云课堂等平台上有许多关于WordPress开发的课程,适合初学者入门和深入学习。
  • 阅读优秀代码:参考一些优秀的WordPress主题和插件的源代码,分析它们的结构和实现方式,学习其中的编程技巧和最佳实践。
  • 实践项目:动手实践是学习的关键,从简单的主题修改或插件开发项目开始,逐渐积累经验,遇到问题及时查阅文档或在社区中寻求帮助。
  • 参与社区:WordPress有庞大的社区,参与社区讨论、论坛交流,与其他开发者分享经验和学习心得,有助于快速提升开发技能。

以下是一些现成的PHP后台管理系统:

1. WordPress:最初是博客平台,现在已发展为功能强大的内容管理系统,可用于构建多种类型网站。它使用PHP和MySQL数据库,有大量免费插件和主题,能轻松扩展功能与自定义外观,全球使用广泛。
2. Drupal:用PHP编写的免费开源模块化框架和内容管理系统,可让个人或社区使用者方便地发表、管理和组织网站内容,能满足从小型个人博客到大型公司和政治网站等不同需求。
3. Joomla:获奖的内容管理系统,可用于建立网站和强大的在线应用。具有易用性和可扩展性,是流行的网站软件,开源且免费。
4. PbootCMS:全新内核且永久开源免费的PHP企业网站开发建设管理系统,采用简单的模板标签,懂HTML就可快速开发企业网站。使用自主研发的高速多层开发框架及缓存技术,默认采用Sqlite轻型数据库,也支持MySQL等,还支持多种功能。
5. HisiPHP:基于ThinkPHP5.1/6+Layui开发的通用后台管理框架,默认集成权限管理、模块管理等常用功能。支持一键升级,内置应用市场,具有响应式开发、表单构建器、表格构建器等功能,方便开发者快速构建应用。
6. Dcat Admin:基于laravel - admin二次开发,只需很少代码就能快速构建功能完善、高颜值的后台系统。内置丰富后台常用组件,支持用户管理、菜单管理、RBAC权限管理等多种功能,对后端开发者友好。