(我的第一次)安装 Laravel

有时,尤其是当您刚刚开始职业生涯时,您似乎遵循了指示却一事无成 – 而其他人似乎发现这非常容易。

这可能非常令人沮丧,我想描述一下即使在几十年之后我也经历完全相同的事情的几种方式。所以我在这里,试图详细描述我在努力让事情顺利进行时所犯的错误和失误。这是我关于这个主题的第一篇文章,但我希望发表更多。

让我们来学习 laravel

laravel 致力于提供令人惊叹的开发者体验 […]无论您是 php web 框架新手还是拥有多年经验 […]

laravel 被誉为“开发人员的框架”,至少在 php 圈子里是这样,因为它比其他框架更简单,并且需要简单而严格的架构决策。我已经完成了其他一些 php 框架 – drupal 7 、drupal 8 、symfony、wordpress、concrete5、prestashop、codeigniter 从我的脑海中浮现出来 – 所以我不打算讨论这个毫无准备。

我将从一台准系统笔记本电脑开始,看看我能走多远。

安装先决条件(tldr;问题:零,信心:最高)

在创建您的第一个 laravel 应用程序之前,请确保您的本地计算机已安装 php、composer 和 laravel 安装程序。此外,您应该安装 node 和 npm 或 bun,以便可以编译应用程序的前端资产。

好的。不是问题。我将自己安装一些 php,从 getcomposer.org 获取 composer,并弄清楚下一步如何安装“laravel 安装程序”。显然我的发行版已经安装了 node 22,或者是我之前设置其他东西时安装的,所以应该涵盖这一点。

$ 作曲家全局需要 laravel/installer

繁荣。完毕。还没有问题,我们有了一个良好的开端,信心空前高涨。

建立一个新的 laravel 项目(tldr;问题:一些,信心:高)

$ laravel 新示例应用
zsh:找不到命令:laravel

哦。也许我必须重新审视那个至高无上的信心。

因此,composer 似乎没有将任何内容安装到常规二进制路径中,并且 composer 安装程序也没有执行任何操作将自身添加到系统路径中。我以前从来没有真正面对过这个问题,因为我直接从 composer 安装的二进制文件出现的任何路径运行它们。例如,对于 drupal,有供应商/drush/drush/drush 或供应商/bin/drush,具体取决于你正在运行哪个版本。我是否需要为自己添加符号链接或别名,或者在作曲家“全局”添加的地方找到 laravel 二进制文件?

我不知道,所以我必须寻找这个。

我在 stack overflow 的答案中找到了一些线索:你可以使用 composer 全局配置 bin-dir –absolute 找到 composer 二进制目录,显然在现代版本的 composer 中,所有带有可执行命令的东西都会将其放入该目录中而不是迷失在等级制度中。

好。我可以在启动脚本中添加一些内容,将其放入我的路径中…除了该命令生成的不仅仅是路径…

$ 作曲家全局配置 bin-dir –absolute
将当前目录更改为 /home/moopet/.config/composer
/home/moopet/.config/composer/vendor/bin

…而且我不能使用整个字符串作为目录。也许我需要使用 tail 来获取最后一行,或者其他东西。等等,不,这个答案还有另一个评论,其中包括 –quiet 标志。那有什么作用?我会尝试composer –help:

用法:
列表 [选项] [–] []

嗯,呃,事实证明,在裸露的composer命令上运行–help实际上为list子命令提供了帮助,而不是composer本身。这让我困惑了一分钟。

-q –quiet 不输出任何消息

嗯,这听起来没什么用!我们想要一些输出。还有什么?

–raw 输出原始命令列表
–format=format 输出格式(txt、xml、json 或 md)[默认值:“txt”]

也许是其中之一?

“–raw”选项不存在。
“–format”选项不存在。

不。正如我所想,这些是列出的选项,而不是通用标志。

无论如何,让我们用 –quiet 来运行它,只是为了便便和搞笑:

$ 作曲家全局配置 bin-dir –absolute –quiet
/home/moopet/.config/composer/vendor/bin

嗯,你知道吗,它成功了。只是记录得很糟糕。

我将使用一些保护代码将其弹出到我的 shell 启动脚本中,然后我们可以继续:

if command -v composer >/dev/null; then  export PATH=$(composer global config bin-dir --absolute --quiet):$PATHfi

设置一个新的 laravel 项目,采取 2(tldr;问题:一些,信心:动摇)

这次 laravel 新的示例应用程序启动,并提示我一些事情。我接受默认值,因为除了入门套件之外,我还没有阅读足够多的文档来了解其中的差异。我选择“breeze”,因为文档中就是这样的。

它开始安装过程,一切看起来都很好,直到:

– 根 composer.json 需要 laravel/pint ^1.0 -> 可满足 laravel/pint[v1.0.0, v1.1.0, v1.1.1]。
– laravel/pint[v1.0.0, …, v1.1.1] 需要 ext-xml * -> 您的系统中缺少它。安装或启用 php 的 xml 扩展。

等等,php 需要 xml 扩展吗?这从未被列为要求!好的,我将快速安装 php-xml。

好的,全部安装完毕。我将再次运行设置。

laravel 新示例应用程序
在 newcommand.php 第 789 行:
申请已存在!

哦。

因此,安装程序完成了一半,但由于未验证其依赖项而失败,并使应用程序处于损坏状态。这不是一个好兆头。 laravel 已经推出,什么,版本 11?

(我的第一次)安装 Laravel

他们现在肯定已经完成了基本的前期要求检查了吗?那好吧。我只需 rm -r example-app 并重新开始,没有任何损失,因为我还没有真正开始。

长话短说1下一个缺少的依赖项是 dom 扩展,或者可能是 xml 扩展。或者也许是 curl 扩展。

– phpunit/phpunit[11.0.1, …, 11.4.3] 需要 ext-dom * -> 您的系统中缺少它。安装或启用 php 的 dom 扩展。
– 根composer.json需要phpunit/phpunit ^11.0.1 ->可由phpunit/phpunit[11.0.1, …, 11.4.3]满足。

所以我需要安装 php-dom 吗?不,尝试其他一些。再次堆栈溢出。原来我需要安装 php-curl。好的。

继续。 rm -r 目录并再次运行安装向导。

建立一个新的 laravel 项目,采取 3(tldr;问题:hngg,信心:仍然摇摆不定,但最近解决问题的成功得到了支撑)

它提示我使用哪个数据库服务器。他们所有人都在旁边说“缺少 pdo 扩展”。

叹息。

我退出安装程序,再次删除整个目录,apt安装php8.3-mysql,因为没有直接的php-pdo包,也没有可用的php-mysql别名,所以我做了一些烦人的apt正在寻找。

illuminatedatabasequeryexception
sqlstate[hy000] [2002] 连接被拒绝(连接:mysql,sql:选择存在(从 information_schema.tables 选择 1,其中 table_schema = ‘laravel_example_app’ 和 table_name = ‘migrations’ 和 table_type in (‘base table’, ‘system versioned’ )) 作为“存在”)

现在怎么办? 此安装程序从未要求我提供数据库的连接详细信息。它试图针对…某物运行 sql 命令。谁知道呢?

碰巧,我在 lan 中的另一台主机上运行了一个 mysql 服务器,并准备使用它(尽管我会注意到,自带数据库并未被列为 laravel 的要求)。我想我应该安装 sqlite,也许这会起作用,因为它不需要任何凭据。

sudo apt install php8.3-sqlite

再试一次。

rm -r 示例应用
laravel 新示例应用程序

巨大的成功。黑客的声音“我在”。为了胜利。成功的孩子。

(我的第一次)安装 Laravel

结论

我成功了吗?我想。

但是如果有人问我这可能需要多长时间,那么基于热情的文档和声誉,我会说 20 分钟。如果我是为了工作而这样做,根据开发人员的经验估计,我的项目经理会加倍或四倍。

我真的花了多长时间?一天晚上一个小时左右,第二天一个小时左右。我并不着急,但事情并不简单。

你知道吗? 我对此不满意。它没有使用 mysql,因为安装程序的这一部分似乎完全损坏了。我正在使用 sqlite,这距离实际生产环境中发生的情况又近了一步。因此,在我开始实际教程之前,todo 列表中肯定还剩下一些事情。

但是它运行了。构建步骤声称他们顺利进行。

我已准备好进入下一阶段:修复在浏览器中打开演示页面后控制台中出现的 jsonexception、语法错误和 processtimedoutexception。

(我的第一次)安装 Laravel

呃哦。

如果一切顺利就好了,嗯。

合唱:太晚了↩

以上就是(我的第一次)安装 Laravel的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1282647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月10日 23:12:25
下一篇 2025年12月10日 23:12:37

相关推荐

  • 如何防止PHP代码被静态分析?通过混淆与加密结合的防护技术是什么?

    答案:结合代码混淆与加密可有效提升PHP代码防护,通过混淆增加静态分析难度,再以加密确保代码仅在运行时解密执行,形成多层防御。首先对变量、函数名重命名,移除注释与空白,加密敏感字符串,并采用控制流混淆和代码压缩,使代码难以阅读;其次将核心代码用AES等算法加密存储,配合Loader在运行时解密并执行…

    2025年12月11日
    000
  • php中如何验证邮箱格式 php验证邮箱地址的正则表达式

    答案:推荐结合filter_var和正则表达式,因filter_var提供基础验证,正则可增强格式准确性,两者结合提升邮箱验证可靠性。 php验证邮箱格式,核心在于使用正则表达式进行匹配,当然,你也可以结合 filter_var 函数,让验证更可靠。 为什么推荐结合 filter_var 和正则表达…

    2025年12月11日
    000
  • php中如何使用gd库_php图像处理gd库教程

    答案:GD库是PHP图像处理核心工具,通过phpinfo()可检测是否安装,常用功能包括创建图像、绘制文字、调整大小、添加水印等,处理中文需使用UTF-8字体并设置编码,掌握GD库可实现Web开发中各类图像操作需求。 GD库是PHP中处理图像的强大工具,它允许你创建、修改和输出各种图像格式。简单来说…

    2025年12月11日
    000
  • 如何使用在线PHP工具测试表单处理?有哪些实用案例分享?

    在线PHP工具在表单测试中核心价值是快速验证数据提交与接收,适合无本地环境时调试表单字段、方法及简单逻辑;其局限在于不支持数据库、文件上传和会话管理,且存在敏感数据泄露风险;适用于快速验证结构、简单校验、Ajax调试及教学场景;涉及复杂功能时应转向本地环境(如XAMPP)、Docker或使用Post…

    2025年12月11日
    000
  • php中如何使用ajax_php与ajax交互实例教程

    答案:Ajax通过JavaScript与PHP异步通信,实现页面局部更新。用户输入名字后,前端用Fetch API发送POST请求,PHP接收JSON数据并返回问候语,前端再更新显示内容,全程无需刷新页面,提升用户体验。 在PHP中利用Ajax进行交互,核心在于客户端(通常是浏览器中的JavaScr…

    2025年12月11日
    000
  • php实现webservice接口_php开发webservice教程

    答案:PHP中实现WebService接口主要依赖SOAP扩展,通过SoapServer和SoapClient类分别实现服务端与客户端,支持WSDL和非WSDL模式。核心步骤包括定义业务逻辑类、配置SOAP服务、处理复杂数据类型与错误机制,并在部署时考虑安全性、性能优化及可伸缩性。SOAP适用于企业…

    2025年12月11日
    000
  • 如何在PHP中对数组进行多条件排序?array_multisort()的用法

    使用array_multisort()可高效实现PHP数组多条件排序,通过传入多个排序键数组及对应规则(如SORT_DESC、SORT_NUMERIC),结合array_column()提取排序列,能直观地对关联数组按优先级排序,相比usort()性能更优,但需注意数据类型匹配和原始数组被修改的问题…

    2025年12月11日
    000
  • php中如何连接mysql数据库 php连接mysql数据库的几种方法

    PHP连接MySQL主要有mysqli和PDO两种方法,推荐使用PDO因其支持多种数据库、预处理语句更安全、错误处理更规范,适合现代PHP开发。 PHP连接MySQL数据库主要有几种方法,最常用且推荐的是 mysqli 扩展(支持面向对象和面向过程两种风格)和 PDO (PHP Data Objec…

    2025年12月11日
    000
  • PHP环境如何与Elasticsearch集成?PHP连接Elasticsearch的配置方法

    使用官方PHP客户端连接Elasticsearch,通过Composer安装并配置主机、认证等参数,实现索引、搜索及批量操作,注意版本兼容、网络、SSL等问题,结合批量处理、查询优化和缓存提升性能,官方客户端为首选方案。 将PHP应用与Elasticsearch连接起来,核心在于选择并正确配置官方的…

    2025年12月11日
    000
  • 如何在PHP在线执行中实现分页功能?动态分页显示数据的实现方法

    答案:PHP分页通过LIMIT和OFFSET结合总记录数、页码计算实现数据分批加载,提升性能。首先查询总记录数并计算总页数与偏移量,再执行带参数绑定的预处理语句获取当前页数据,最后生成带上下页及页码的导航链接。为优化大量数据性能,应使用索引、键集分页替代大OFFSET查询,并可结合AJAX实现“加载…

    2025年12月11日
    000
  • PHP动态生成并下载包含数据库PDF文件的ZIP压缩包

    本文详细介绍了如何使用PHP的ZipArchive类,结合数据库操作,将存储在MySQL数据库中Base64编码的PDF文件动态打包成ZIP格式,并直接提供给用户下载。核心在于利用addFromString方法,避免在服务器上创建临时PDF文件,实现高效、无痕迹的文件打包与分发,同时涵盖了数据库交互…

    2025年12月11日
    000
  • php中如何操作数组 php数组常用函数大全与示例

    PHP数组操作依赖内置函数实现高效增删改查与复杂数据处理,核心包括创建([]、range、compact)、遍历(foreach)、筛选(array_filter)、转换(array_map)、增删(array_push/unshift/merge)、排序(sort、ksort、usort)及多维数…

    2025年12月11日
    000
  • 如何在PHP中将字符串按换行和空格转为数组?多重分割技巧

    最直接高效的方法是使用preg_split配合正则表达式/s+/,可同时按空格、换行等任意空白字符分割字符串,并通过PREG_SPLIT_NO_EMPTY去除空元素,避免explode只能处理单一分隔符的局限性,实现灵活精准的字符串拆分。 在PHP中,要将一个字符串同时按换行符和空格分割成数组,最直…

    2025年12月11日
    000
  • php操作json数据的方法_php json编码和解码详解

    PHP通过json_encode和json_decode实现JSON数据的编码与解码,分别用于将PHP数据转为JSON字符串及将JSON字符串转为PHP数组或对象,需注意中文编码、数据类型兼容性及JSON格式正确性。 PHP操作JSON数据,简单来说,就是把PHP的数据结构转换成JSON字符串,或者…

    2025年12月11日
    000
  • 什么是PHP在线运行的代码高亮功能?如何提升代码可读性?

    代码高亮通过颜色区分语法元素,提升可读性,便于初学者理解与团队协作;结合统一编码规范、清晰命名、合理注释、函数拆分、类型声明等习惯,才能真正实现高效可维护的PHP开发。 PHP在线运行的代码高亮功能,说白了,就是你的代码在浏览器里被不同颜色“粉刷”一遍,让关键字、变量、字符串、注释这些元素各司其职,…

    2025年12月11日
    000
  • php中如何发送http请求 php发送http请求的几种方式对比

    PHP中发送HTTP请求的常见方式包括file_get_contents、fopen结合stream_context_create、cURL扩展及Guzzle客户端。file_get_contents适用于简单GET请求,使用方便但功能有限;fopen方式可自定义部分请求参数,灵活性适中;cURL功…

    2025年12月11日
    000
  • PHP mysqli::reap_async_query() 的使用与注意事项

    mysqli::reap_async_query() 函数在 PHP 的 mysqli 扩展中扮演着重要的角色,尤其是在处理异步 SQL 查询时。即使其返回值未被显式使用,调用此函数仍然具有关键作用,主要体现在清理连接状态和支持并发查询。本文将详细分析该函数的功能、使用场景以及可能出现的错误,帮助开…

    2025年12月11日
    000
  • Laravel leftJoin 查询性能优化:where 与 on 的正确使用

    本文深入探讨了Laravel中leftJoin查询性能慢的常见问题,尤其当在连接条件中使用where子句时。通过对比Laravel执行与直接SQL执行的性能差异,揭示了使用on方法定义连接条件的重要性。文章提供了正确的代码示例,并强调了在Laravel中构建高效数据库查询的最佳实践,以避免潜在的性能…

    2025年12月11日
    000
  • 通过PHP高效获取和修改Contact Form 7表单的HTML结构

    本教程详细介绍了如何使用PHP程序化地获取Contact Form 7(CF7)表单的HTML结构。通过利用CF7将表单存储为自定义文章类型及其元数据的机制,可以直接通过get_post_meta()函数,依据表单ID检索到表单的原始HTML字符串,从而实现高级的定制化和动态修改,避免直接操作私有对…

    2025年12月11日
    000
  • Contact Form 7:PHP程序化获取与操作表单HTML内容的最佳实践

    本文详细介绍了如何通过PHP程序化地获取Contact Form 7 (CF7) 表单的HTML内容。我们将探讨CF7表单作为WordPress自定义文章类型的存储机制,并提供使用get_post_meta函数从数据库中安全、高效地提取表单字符串的示例代码和最佳实践,避免直接访问私有对象属性,并讨论…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信