我正在开发一个网站并使用 git。存储库是公开的,但我不希望 mySQL 信息成为其中的一部分。我是否应该将连接代码放在一个文件中,然后使用 .gitignore 阻止该文件?
有没有更好、更复杂的最佳实践,或者就这么简单?
我希望 git 默认能更好地处理 mySQL。我可以轻松保存文件但不能保存数据库,但随着应用程序的增长,这些文件将依赖于数据库。除了使用平面文件或一些复杂的 mySQL 转储外,我还没有找到好的解决方案。我认为您可以使用使用文件而不是数据库的数据库引擎,但我使用 mySQL 已经很久了,我讨厌为了适应 git 而改变一切。有没有办法让 git 在每次执行推送/部署时都转储/导入 mySQL?
抱歉,我把 3 个问题合为 1 个,但我不想开 3 个帖子,尤其是当我认为我知道问题 1 的答案时。这是我多年来的第一个真正的项目,我几乎觉得我必须重新学习编程。很多东西都是新的 - 弹性框和弹性网格以及 php8.2(而不是 5)和 msqli - 一切都好,要么好很多,要么只是好一点点,但一下子就有很多不同的东西。我希望我 38 岁的大脑还能理解。我不能像 20 多岁时那样,连续 12 小时喝咖啡,我希望编程不仅仅是年轻人的游戏,但我正在努力更聪明地工作,拿出一些东西并推销它,而不是只是写出大量不必要的代码。
在项目根目录中创建 .env 文件。在 php 中使用 $_ENV 或 getenv()。将 .env 文件添加到 .gitignore 以防止被包含在 Git 中。
使用 PHP 的 vlucas/phpdotenv 包来检查其他包的等效性。
将您的凭证保存在 .env 中,如下所示:
关于数据库连接参数,专业解决方案通常使用环境变量,如Mohammed 的回答所示。您可以将其存储在 .env 文件中,并使用 忽略它
.gitignore
。我不太明白你的第二个问题。你是否想将 MySQL 数据库的结构信息存储在存储库中,以便在检出存储库时可以导入它并快速开始?
在这种情况下,您可以将
CREATE DATABASE
和CREATE TABLE
命令转储到.sql
文件中。一些 MySQL 前端可以为您完成此操作。或者,您可以查看Flyway,这是一种现代数据库版本控制和迁移工具——有点像数据库的 git。它需要一些学习(你永远不会太老),但当你掌握它时,你的生活会更轻松。