如何在 Ubuntu 20.04 上安装 CodeIgniter

2023-11-06

Codeigniter 是功能强大的 PHP 框架,用于快速开发全功能应用程序。它是一个由开发者为开发者构建的开源PHP框架。 Codeigniter 4 是可用于应用程序开发的最新版本。

本教程将帮助您在 Ubuntu 系统上安装 CodeIgniter 4 框架。

先决条件

Codeigniter 4 框架需要您的系统上有 Web 服务器、MySQL 数据库服务器和 PHP。使用以下教程在 Ubuntu 20.04 系统上安装 LAMP 堆栈。

  • 如何在 Ubuntu 20.04 上设置 LAMP

在您的系统上安装 LAMP 堆栈后,请按照以下教程创建 Codeigniter 应用程序并在您的系统上进行配置。

第 1 步 – 安装 Composer

本教程使用 PHP Composer 创建 Codeigniter 4 应用程序。PHP Composer 以二进制文件形式提供,可以直接下载和使用。运行以下命令在 Ubuntu 系统上安装 Composer。


curl -sS https://getcomposer.org/installer | php
  

mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
  

第 2 步 – 创建 CodeIgniter 应用程序

Codeigniter 提供应用程序启动器编写器模块来创建新应用程序。 Codeigniter 应用程序入门存储库包含框架应用程序,包括对最新发布的框架版本的 Composer 依赖项。

运行以下命令在您的系统上创建 Codeigniter 4 应用程序:


composer create-project codeigniter4/appstarter CodeApp
  

您将看到如下结果:


Creating a "codeigniter4/appstarter" project at "./CodeApp"
Installing codeigniter4/appstarter (v4.0.3)
  - Installing codeigniter4/appstarter (v4.0.3): Downloading (100%)
Created project in /home/rahul/CodeApp
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 35 installs, 0 updates, 0 removals
  - Installing laminas/laminas-zendframework-bridge (1.0.4): Downloading (100%)
  - Installing laminas/laminas-escaper (2.6.1): Downloading (100%)

  [hiding long output]

sebastian/global-state suggests installing ext-uopz (*)
phpunit/php-code-coverage suggests installing ext-xdebug (^2.7.2)
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0.0)
phpunit/phpunit suggests installing ext-soap (*)
phpunit/phpunit suggests installing ext-xdebug (*)
Writing lock file
Generating autoload files
3 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Generating autoload files
Generated autoload files
  

您的 Codeigniter 应用程序是在CodeApp目录。

步骤 3 – 配置数据库

现在,在 MySQL 中为您的 Codeigniter 应用程序创建一个数据库。我的机器上运行的是 MySQL 5.7。使用 root 用户连接到 MySQL,然后使用以下查询创建数据库和用户。


mysql -u root -p
  

执行以下查询来为您的应用程序创建数据库和用户。

1
2
3
4
5
CREATE DATABASE 代码点火器4;
创建用户 'dbuser'@'本地主机' 鉴定人 '_密码_';
GRANT ALL ON 代码点火器4.* to 'dbuser'@'本地主机';
FLUSH 特权;
quit

接下来,您需要在文本编辑器中编辑数据库配置文件并更新上面创建的数据库设置。运行以下命令以编辑应用程序目录中的文件:


nano app/Config/Database.php
  

更新以下值。


public $default = [
	'DSN'      => '',
	'hostname' => 'localhost',
	'username' => 'dbuser',
	'password' => '_password_',
	'database' => 'codeigniter4',
	'DBDriver' => 'MySQLi',
	'DBPrefix' => '',
	'pConnect' => false,
	'DBDebug'  => (ENVIRONMENT !== 'production'),
	'cacheOn'  => false,
	'cacheDir' => '',
	'charset'  => 'utf8',
	'DBCollat' => 'utf8_general_ci',
	'swapPre'  => '',
	'encrypt'  => false,
	'compress' => false,
	'strictOn' => false,
	'failover' => [],
	'port'     => 3306,
];
  

步骤 4 – 配置 Codeigniter 应用程序

现在您需要为您的应用程序配置基本 URL。在本教程中,我将 www.tecadmin.local 域用于我们的应用程序。您还可以选择 localhost 或您选择的任何其他域名。

运行以下命令进行编辑App.php在文本编辑器中创建文件:


vi app/Config/App.php
  

在App.php中,更新baseURL您用于应用程序的域名:


  public $baseURL = 'http://www.tecadmin.local/';
  

您可能还需要通过设置更改应用程序的时区应用时区多变的。


 public $appTimezone = 'UTC';
  

保存文件并关闭。

步骤 5 – 为 Codeigniter 配置 Apache

在本教程中,我在 Ubuntu 系统上使用 Apache Web 服务器。因此,为我们的 Codeigniter 应用程序创建一个新的虚拟主机配置文件。

让我们创建新文件并编辑:


vi /etc/apache2/sites-available/codeigniter4.conf
  

使用正确的服务器名称和别名添加以下内容:

1
2
3
4
5
6
7
8
<虚拟主机 *:80>
服务器名称 tecadmin.local
服务器别名 www.tecadmin.local
文档根目录 /var/www/CodeApp/public
    <目录 /var/www/CodeApp>
允许覆盖 All
    </目录>
</虚拟主机>

保存 Apache 虚拟主机配置文件。

然后,使用 a2enmod 命令启用新创建的 Codeigniter 虚拟主机。另外,重新启动 Apache 服务以应用更改。


sudo a2ensite codeigniter4
sudo systemctl restart apache2
  

第 6 步 – 测试应用程序

CodeIgniter 4 应用程序已准备好在您的 Ubuntu 系统上使用。您可以使用配置的域名在Web浏览器中访问应用程序。


 http://www.tecadmin.local/
  

默认情况下,您将看到下面的屏幕。

结论

在本教程中,您学习了如何创建 Codeigniter 应用程序并使用 Apache Web 服务器进行部署。让我们开始使用 Codeigniter 进行开发。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 20.04 上安装 CodeIgniter 的相关文章

  • Doctrine2:入门教程“没有要处理的元数据类”

    我已经将本教程的第一部分运行了三遍 到目前为止 在这里或其他地方进行的大量搜索都无法帮助我使其发挥作用 我收到 没有要处理的元数据类 当我尝试时 php vendor bin doctrine orm schema tool update
  • 计算特定产品类别的购物车商品数量

    我试图仅从 WooCommerce 中的特定产品类别获取购物车中的商品数量 我正在为一家酒厂做一个网站 它有酒精和非酒精产品 所有葡萄酒都属于 葡萄酒 主类别或类别 ID 34 其下有许多子类别和产品 对于属于此类别的任何商品 我需要知道此
  • 使用 PHP 将 SVG 图像转换为 PNG

    我正在开发一个网络项目 该项目涉及动态生成的美国地图 根据一组数据为不同的州着色 这个 SVG 文件为我提供了一张很好的美国空白地图 并且很容易更改每个州的颜色 困难在于 IE 浏览器不支持 SVG 因此为了让我使用 svg 提供的便捷语法
  • PHP:是否可以从文件内容(字符串)创建 SplFileObject 对象?

    例如 contents file get contents image png 是否可以从 contents 创建 SplFileObject 对象 Thanks php 有一些特殊的流包装器 http www php net manual
  • MySQL 最佳实践:SELECT 子递归尽可能提高性能?

    我想选择一个根项目及其子项 使其性能尽可能高 我更喜欢使用嵌套集模型 但这次表结构遵循邻接模型 有关嵌套集和邻接模型的更多信息 http mikehillyer com articles managing hierarchical data
  • 由于重复捕获组而不是捕获重复组,正则表达式不匹配

    我有以下正则表达式 A G A G 具有以下表达式 A BsCb 我期望 3 个匹配结果 A Bs Cb 但测试在https regex101 com https regex101 com 只给我最后一场比赛Cb 并告诉我重复捕获组只会捕获
  • 如何使用 PHP 查找目录中的前 5 个文件?

    如何使用 PHP 列出按字母顺序排序的目录中的前 5 个文件或目录 Using scandir array slice array filter scandir path to dir is file 0 5 The array filte
  • Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

    我创建了一个新的 Symfony 项目 并且不断收到此消息 DoctrineMigrationsBundle 需要启用 DoctrineBundle 错误并且无法摆脱它 显然我是这个星球上唯一一个收到此错误的人 因为谷歌并没有太大帮助 在
  • 如何销毁一个物体?

    据我所知 很少 有两种方法 var new object Then Method 1 Set to null var null Method 2 Unset unset var 还有其他更好的方法吗 我在这里吹毛求疵吗 您正在寻找unset
  • Mongodb $push 嵌套数组

    我想向我的嵌套数组添加新数据 我的文档是 username erkin email email protected cdn cgi l email protection password b playlists id 58 name asd
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • PHP OOP 静态属性语法错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么不
  • 将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

    我正在 Symfony2 中创建一个表单 表格只包含一个book字段允许用户在列表中进行选择Books实体 我需要检查是否选择了Book属于Author我的控制器里有 public class MyFormType extends Abst
  • 如何编写可以补偿拼写错误数据的 MySQL 搜索?

    有没有什么方法可以编写一个 MySQL 搜索来弥补用户在拼写等方面的错误 作为随机示例 有人可能会输入 电子邮件受保护 cdn cgi l email protection代替 电子邮件受保护 cdn cgi l email protect
  • 将价格格式设置为逗号分隔

    在我的数据库中 我有类似的值 256 23 200 33 89 33 133 45 我必须将这些值乘以千 然后将结果格式化为价格 逗号分隔 256 23 x 1000 256230 I want to show this as 256 23
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • Slim 3 - 斜杠作为路由参数的一部分

    我需要使用可以包含斜杠 的参数来编写 URL 例如 经典的 hello username 路线 默认情况下 hello Fabien将匹配此路线 但不匹配 hello Fabien Kris 我想问你如何在 Slim 3 框架中做到这一点
  • 如果文件名减去扩展名,.htaccess url 重写行为将被覆盖。与网址相同

    我正在尝试整理 URL 并从中删除 php 扩展名等 我位于网站的基本文件夹中 因此没有可以优先处理的父 htaccess 文件或其他文件 这是我的 htaccess 代码 RewriteEngine On RewriteRule give
  • 在 Windows 上查看 PHP 文件夹

    我正在编写一个简单的 PHP 脚本来监视文件夹及其子文件夹的任何更改 新文件 修改 删除 然后执行操作 我将使用 Windows 上的命令行运行此脚本php f script php 我一直在寻找一种在 Windows 上观看具有 PHP
  • Apache 2.4.9 在启用 ssl 模块并设置 ssl 证书后失败

    Apache 在尝试设置 ssl 证书后抛出以下错误 ssl emerg pid 30907 AH02572 Failed to configure at least one certificate and key for localhos

随机推荐

  • 【Spring Security】UserDetailsService 接口介绍

    文章目录 UserDetailsService 介绍 UserDetailsService 具体操作 UserDetailsService 方法介绍 UserDetailsService 介绍 UserDetailsService 在 Sp
  • C++库函数——map与set

    目录 1 关联式容器是什么 2 键值对 3 set set的介绍 set的模板参数列表 set的构造 set的迭代器 set的容量 set的修改与操作 set的使用举例 4 multiset multiset的介绍 multiset的使用举
  • 内核current宏解析

    内核 current宏解析 Technorati 标签 current thread info 在内核中 可以通过current宏来获得当前执行进程的task struct指针 现在来简要分析以下 最原始的定义如下 define curre
  • sql必知必会一图总结梳理

    关注公众号 JustGoForIt 免费领取sql必知必会电子书
  • 环境准备与小程序首页的运行逻辑

    环境准备 上传云函数 getCustomerOpenid 上传云函数到云环境 xiongyuqingcloud 调用云函数 Promise Cloud callFunction Object object 返回一个 Promise 对象 所
  • Eclipse:The selection cannot be launched,and there are no recent launches

    报错 Eclipse工具启动提示the selection cannot be launched and there are no recent 经网上查找了解 缺少String args 好久没学java了暴露了 修改后run 错误代码
  • 工具篇——1、TMUX

    目录 工具篇 一 TMUX 1 安装 2 概念 3 具体操作 3 1 会话 3 2 窗口 3 3 窗格 4 TMUX 配置 5 结对编程 工具篇 本系列专门用于记录一些软件或者小工具的使用 工欲善其事必先利其器 拥有称心如意的工具 可以大大
  • 来!一起捋一捋机器学习分类算法

    大数据文摘出品 来源 builtin 编译 邢畅 刘兆娜 李雷 钱天培 说起分类算法 相信学过机器学习的同学都能侃上一二 可是 你能够如数家珍地说出所有常用的分类算法 以及他们的特征 优缺点吗 比如说 你可以快速地回答下面的问题么 KNN算
  • 获取PancakeSwap Price

    导入 ethers js 接口文档 ethers js 中文文档 深入浅出区块链
  • 网络层(IP)和数据链路层(以太网)的关系

    目录 一 路由选择 二 IP协议中的路由选择 三 数据链路层协议 以太网 1 负责的工作 2 核心的协议 3 举例说明传输层 网络层 数据链路层之间的关系 4 描述数据使用的不同术语 很少区分 5 以太网帧格式 四 mac地址 数据链路层的
  • 2024王道408数据结构 P144 T11

    2024王道408数据结构 P144 T11 思考过程 题目说要我们找到元素值为x的结点 删除以它为根的子树 并释放相应的空间 这里要注意题目让我们删除的是根的子树包括根 那读明白了题目的意思我们就开始构思 先是要遍历二叉树 找到元素值为x
  • 『Android Studio』用Fragment实现一个简易新闻浏览界面

    Fragment意思为碎片 片段 在Android中有些Activity在手机上看起来很美观 但放在屏幕更大的平板类的设备上 可能就不一样了 而Fragment能在一个Activity中内嵌多个独立的小Activity 有效的解决了app在
  • 海盗分金币问题 编程+思路 C++

    来自招银网络科技笔试测试岗位的一道题目 海滩上有一堆金币 n个海盗来分 第一个海盗把这堆金币平均分成3份 如果不够就从自己口袋拿出来补齐 并拿走了一份 第二个海盗把剩下的金币又平均分成3份 如果不够再从自己口袋补齐 并拿走了一份 第三个 第
  • 利用iText将多张图处转为一个pdf

    项目需要将多张JPG格式的图片转为一个PDF再进行后续处理 百度查资源看博客发现用iText比较简单 也没想到会这么简单 刷新了我的彩虹心 话不多说 直接上code 项目用的是maven进行管理的 所以最开始需要引入依赖 如下
  • ROS STAGE教程4(Melodic Stage-4.3)stage_ros Segmentation fault (core dumped)

    针对以前适用于stage 4 1 ROS Kinetic的world文件无法用于ROS Melodic系统 一致出现问题 Segmentation fault core dumped 然后退出 步骤如下 catkin ws src目录下 g
  • TCP/IP 协议是一个“有层次的协议栈”

    在上一讲中 我简单提到了 TCP IP 协议 它是 HTTP 协议的下层协议 负责具体的数据传输工作 并且还特别说了 TCP IP 协议是一个 有层次的协议栈 在工作中你一定经常听别人谈起什么 四层负载均衡 七层负载均衡 什么 二层转发 三
  • VHDL实现4线-16线译码器

    源代码 library ieee use ieee std logic 1164 all entity decoder4 16 is port i in std logic vector 3 downto 0 y out std logic
  • ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

    本案例为一个 threejs 的特效网页 大小球体进行包裹 外球体为透明材质 但是进行了线框渲染 使其能够通过外球踢查看其内球体 注 案例参考源于互联网 在此做代码解释 侵删 本案例除 ThreeJS 外不适用任何第三方框架 放心食用 懒的
  • 什么是 .htaccess 文件和基本用途

    什么是 htaccess htaccess 超文本访问 是一个有用的文件 对于许多 Web 服务器来说 可以根据目录应用设置 它允许在运行时覆盖 Apache 服务器的默认配置 使用 htaccess 我们可以轻松地在运行时启用或禁用任何功
  • 如何在 Ubuntu 20.04 上安装 CodeIgniter

    Codeigniter 是功能强大的 PHP 框架 用于快速开发全功能应用程序 它是一个由开发者为开发者构建的开源PHP框架 Codeigniter 4 是可用于应用程序开发的最新版本 本教程将帮助您在 Ubuntu 系统上安装 CodeI