在对所有文档,StackOverflow问题和博客文章进行彻底审查后,我可以对这个特定的事情......以及几个小时的故障排除,我仍然无法找到如何使基本环境变量使用工作在我的Slim PHP项目中。
这是我的第一个PHP Web应用程序项目,当然我第一次将环境变量用于PHP。
基本上我尝试做的是在本地.htaccess
文件中将密码设置为环境变量,这样在我推送到GitHub的代码中,密码不会被不安全地暴露出来( .htaccess在我的项目中被git 设置为忽略)。
我基本上想要使用以下代码:
.htaccess
档案:
SetEnv PASSWORD superSecretPassw0rd
稍后在我项目的适当位置,PHP文件检索该变量并将其用于通过SMTP发送电子邮件。
例如/app/routes.php
:
$mail->Password = getenv("PASSWORD");
现在,我正在做第一部分,在.htaccess
文件中设置环境变量。事实上,我尝试过以下两种方式设置环境变量:
SetEnv HTTP_PASSWORD NeTzj6gKJp5q
SetEnv PASSWORD glop
RewriteRule .* - [E=TEST:PasswordJOKES10]
然而,当我var_dump(getenv("TEST"));
时,变量显示为bool(false)
。
我的.htaccess
文件根本无法读取。当我删除.htaccess
文件的内容时,一切基本上都是相同的,如果文件只是填充了长的随机文本行,它也会这样做。
我还确保module rewrite is enabled
。所以这不是问题。
我还检查了/etc/apache2/apache2.conf
的设置。最重要的设置看起来像我设置正确:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride
# directive.
AccessFileName .htaccess
AllowOverride All
已设置,因此.htaccess
文件可以正常工作,AccessFileName
设置为.htaccess
。
我的项目的完整路径是/var/www/html/east-end-php-site/
,目录结构基本上是这样的:
/east-end-php-site/
|-----> /app/
|-----> /config/
|-----> /vendor/
composer.json
README.md
.htaccess
index.php
我的本地设置:
通过从该目录的根目录在终端中运行命令php -S localhost:8000
来运行项目。
我目前在这个问题上遇到了障碍。请告诉我StackOverflow同志,我做错了什么?接下来我应该在哪里进行故障排除?什么可能解决这个问题
额外参考1
整个.htaccess
文件如下所示:
AllowOverride ALL
RewriteEngine On
SetEnv HTTP_TEST NeTzj6gKJp5q
SetEnv TEST glop
# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
RewriteBase /var/www/html/east-end-php-site/
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
RewriteRule .* - [E=TEST:PasswordJOKES10]
答案 0 :(得分:1)