cPanel应用管理器中设置的环境变量如何使用PHP调用?
cPanel共享主机PHP读取Application Manager配置的环境变量方案
第一步:先尝试原生读取方法
你可以先在home/mytest-folder路径下新建测试PHP文件,写入以下代码测试:
<?php // 方法1:使用getenv函数 $test_var = getenv('test_var'); var_dump($test_var); // 方法2:读取$_ENV超全局变量 var_dump($_ENV['test_var'] ?? '未找到$_ENV中的test_var'); // 方法3:读取$_SERVER超全局变量 var_dump($_SERVER['test_var'] ?? '未找到$_SERVER中的test_var'); ?>
如果以上方法返回的是你配置的test值,说明环境变量已经正常传递,可以直接使用。如果返回false或者未找到,需要做以下配置修改:
第二步:配置环境变量传递(适配GoDaddy共享主机)
cPanel默认会限制PHP进程读取系统/应用级环境变量,你可以任选以下一种方案配置:
方案1:通过.htaccess传递环境变量
在home/mytest-folder路径下的.htaccess文件中添加以下规则,CGI/FastCGI模式需要加HTTP_前缀:
# 传递环境变量给PHP SetEnv test_var test # 如果上面不生效,FastCGI模式用下面的写法 SetEnv HTTP_test_var test
配置后你可以用getenv('HTTP_test_var')或者getenv('test_var')读取对应值。
方案2:使用PHP版dotenv类库(和你Node.js的使用习惯一致,更安全)
和Node.js的dotenv逻辑完全一致,你可以用PHP通用的dotenv类库实现:
- 在应用根目录新建
.env文件,写入test_var=test,注意把.env文件加入.gitignore避免提交到代码仓库 - 配置
.htaccess禁止外部访问.env文件,添加规则:
<Files .env> Order allow,deny Deny from all </Files>
- 在PHP入口文件引入dotenv加载逻辑:
<?php require __DIR__ . '/vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); // 读取变量 $test_var = $_ENV['test_var']; ?>
这种方案安全性更高,不需要依赖主机的环境变量配置,也避免敏感配置硬编码到代码中。
安全最佳实践
- 不要把敏感配置(比如数据库密码、API密钥)硬编码到PHP代码中
- 如果使用.env文件,一定要配置服务器规则禁止外部直接访问该文件
- 不要把.env文件提交到版本控制系统
- 生产环境不要开启PHP的环境变量调试输出,避免泄露敏感配置
内容的提问来源于stack exchange,提问作者CynicWays
相关产品推荐
相关产品推荐

