Ⅰ 如何让php能够读取系统环境变量
一、fpm模式
1、通过服务器传递
如在nginx的配置里设置:
fastcgi_param ENV_XXX 123456;
每次页面请求nginx都会将此变量传递给php,php可以通过getenv函数或$_SERVER全局变量获得。
2、通过fpm配置传递
fpm在每次启动时都会读取php-fpm.conf文件中的环境变量设置,如:
env[ENV_XXX]="test test"
或者让fpm读取系统环境变量,如:
env[ENV_XXX]=$ENV_XXX
注意此种方式要确保系统环境变量存在,且不被sudo禁用。
如果fpm是用sudo方式启动,默认sudo会禁用一些环境变量,可以通过以下方式放开限制:
vim /etc/sudoers
Defaults env_reset
Defaults env_keep = "ENV_XXX"
或者干脆放开所有限制:
Defaults !env_reset
最后,如果修改了php-fpm.conf中的设置需要重启fpm才能生效,同样php可以通过getenv函数或$_SERVER全局变量获得环境变量。
二、命令行模式
命令行模式限制较少,可以通过getenv函数或$_SERVER全局变量获取对当前执行用户有效的系统环境变量,同样要注意sudo的限制。
Ⅱ PHP如何得到用户自定义的环境变量
bash_profile里起码是:
export MYENV=/home/lib
保存后,如果你不重新开终端,那么在当前终端source ~/.bash_profile重新加载环境变量。
Ⅲ mac上php需要设置环境变量么
mac 一般使用bash作为默认shell
Mac系统的环境变量,加载顺序为:
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
当然/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。~/.bashrc没有上述规则,它是bash shell打开的时候载入的。
如果没特殊说明,设置PATH的语法都为:
——————————————————-
1
2
#中间用冒号隔开
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
(一)全局设置
下面的几个文件设置是全局的,修改时需要root权限
1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。
2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
4)
1.创建一个文件:
sudo touch /etc/paths.d/mysql
2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑):
sudo vim /etc/paths.d/mysql
3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)
/usr/local/mysql/bin
据说,这样可以自己生成新的文件,不用把变量全都放到 paths 一个文件里,方便管理。
(二)单个用户设置
1)~/.bash_profile (任意一个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
设置命令别名alias ll=’ls -la’
设置环境变量:
1
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
2)~/.bashrc 同上
如果想立刻生效,则可执行下面的语句:
$ source 相应的文件
一般环境变量更改后,重启后生效。
Ⅳ php 服务器变量$_SERVER 服务器环境变量 $_ENV
PHP $_SERVER 变量
$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。它是 PHP 中一个超级全局变量,我们可以在 PHP 程序的任何地方直接访问它。
$_SERVER 包含着众多的信息,你可以尝试直接打印它:
print_r($_SERVER);
$_SERVER 数组元素
更多情况下,我们只需要 $_SERVER 数组中的某些元素(数组单元)。$_SERVER 数组包含的元素如下:
页面程序相关
$_SERVER[‘PHP_SELF’]:相对于网站根目录的路径及 PHP 程序名称,与 document root 相关。
$_SERVER[‘HTTP_REFERER’]:链接到当前页面的前一页面的 URL 地址。
$_SERVER[‘SCRIPT_NAME’]:相对于网站根目录的路径及 PHP 程序文件名称 。
$_SERVER[‘REQUEST_URI’]:访问此页面所需的 URI 。
$_SERVER[‘SCRIPT_FILENAME’]:当前运行 PHP 程序的绝对路径及文件名。
$_SERVER[‘PATH_TRANSLATED’]:当前 PHP 程序所在文件系统(不是文档根目录)的基本路径。
$_SERVER[‘QUERY_STRING’]:查询(query)的字符串(URL 中第一个问号 ? 之后的内容但不包括 # 后面的内容)。
$_SERVER[‘argv’]:传递给当前 PHP 程序的参数。
$_SERVER[‘argc’]:命令行模式下,包含传递给程序的命令行参数的个数。
$_SERVER[‘REQUEST_TIME’]:请求开始时的时间戳,从 PHP 5.1.0 起有效。
$_SERVER[‘REQUEST_METHOD’]:访问页面时的请求方法,例如:“GET”、“HEAD”,“POST”或“PUT”。
$_SERVER[‘HTTP_ACCEPT’]:当前请求的 Accept: 头信息的内容。
$_SERVER[‘HTTP_ACCEPT_CHARSET’]:当前请求的 Accept-Charset: 头信息的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER[‘HTTP_ACCEPT_ENCODING’]:当前请求的 Accept-Encoding: 头信息的内容。例如:“gzip”。
$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]:当前请求的 Accept-Language: 头信息的内容。例如:“zh-cn”。
$_SERVER[‘HTTP_CONNECTION’]:当前请求的 Connection: 头信息的内容。例如:“Keep-Alive”。
$_SERVER[‘HTTP_HOST’]:当前请求的 Host: 头信息的内容。
$_SERVER[‘HTTPS’]:如果 PHP 程序是通过 HTTPS 协议被访问,则被设为一个非空的值。
$_SERVER[‘PHP_AUTH_DIGEST’]:当作为 Apache 模块运行时,进行 HTTP Digest 认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP 头内容(以便作进一步的认证操作)。
$_SERVER[‘PHP_AUTH_USER’]:当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER[‘PHP_AUTH_PW’]:当 PHP 运行在 Apache 或 IIS(PHP 5 是 ISAPI)模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER[‘AUTH_TYPE’]:当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。
服务器端相关
$_SERVER[‘DOCUMENT_ROOT’]:当前运行 PHP 程序所在的文档根目录,在服务器配置文件中定义。
$_SERVER[‘GATEWAY_INTERFACE’]:服务器使用的 CGI 规范的版本,例如:“CGI/1.1”。
$_SERVER[‘SERVER_ADDR’]:当前运行 PHP 程序所在的服务器的 IP 地址。
$_SERVER[‘SERVER_NAME’]:当前运行 PHP 程序所在的服务器的名称。
$_SERVER[‘SERVER_ADMIN’]:Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER[‘SERVER_PORT’]:服务器所使用的端口。如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口。
$_SERVER[‘SERVER_SIGNATURE’]:包含服务器版本和虚拟主机名的字符串。
$_SERVER[‘SERVER_SOFTWARE’]:服务器标识的字串,在响应请求时的头信息中给出。
$_SERVER[‘SERVER_PROTOCOL’]:请求页面时通信协议的名称和版本,例如:“HTTP/1.0”。
其他杂项
$_SERVER[‘HTTP_USER_AGENT’]:当前请求的 User-Agent: 头信息的内容,该字符串表明了访问该页面的用户代理的信息。
$_SERVER[‘REMOTE_ADDR’]:正在浏览当前页面用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’]:正在浏览当前页面用户的主机名。
$_SERVER[‘REMOTE_PORT’]:用户连接到服务器时所使用的端口。
注意,如果以命令行方式运行 PHP,上面列出的元素几乎没有有效的(或是没有任何实际意义的)。
PHP $_ENV 变量
$_ENV 是一个包含服务器端环境变量的数组。它是 PHP 中一个超级全局变量,我们可以在 PHP 程序的任何地方直接访问它。
$_ENV 只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接打印它:
print_r($_ENV);
限于篇幅,在此不再列出打印的结果,且不同的服务器上,打印出的结果可能是完全不同的。
$_ENV 数组元素
$_ENV 数组中的元素(数组单元)随服务器环境不同而有较大差异,所以无法像 $_SERVER 那样列出完整的列表。以下是 $_ENV 数组包含的比较通用的元素:
$_SERVER[‘PATH’]:环境变量 PATH 路径。
$_SERVER[‘CLASSPATH’]:系统 CLASSPATH 路径。
$_SERVER[‘LIB’]:系统 LIB 库路径。
$_SERVER[‘INCLUDE’]:系统 Include 路径,注意与 PHP 的包含路径是不一样的。
$_SERVER[‘OS’]:操作系统类型。
$_SERVER[‘LANG’]:系统语言,如 en_US 或 zh_CN。
$_SERVER[‘PWD’]:当前工作目录。
$_SERVER[‘TEMP’]:系统 TEMP 路径。
$_SERVER[‘AP_PARENT_PID’]:当前进程 ID 号。
$_SERVER[‘NUMBER_OF_PROCESSORS’]:系统 CPU 数目。
$_ENV 为空的原因及解决办法
如果打印输出 $_ENV 为空,可以检查一下 php.ini 的配置:
variables_order = "EGPCS"
上述配置表示 PHP 接受的外部变量来源及顺序,EGPCS 是 Environment、Get、Post、Cookies 和 Server 的缩写。如果 variables_order 的配置中缺少 E ,则 PHP 无法接受环境变量,那么 $_ENV 也就为空了。
Ⅳ php环境变量是什么意思!
配置php的环境变量。到我们电脑->高级->环境变量
把php.exe路径配置上去。以后就可以直接在CMD大黑框直接使用。不需要路径。
Ⅵ 将PHP加到电脑的环境变量中如图(D:\PHPEnv\PHP5
第一步:找到系统PHP的安装路径
例如:D:\PHP,这里包含php-cgi.exe
第二步:以win7系统为例,鼠标右键计算机属性
第三步: 点击高级系统设置
第四步:点击环境变量
第五步:设置PATH属性,添加PHP所在路径
楼主还有什么想问的话,以后可以多去后盾人查看一下相关的视频,这样对你更加有帮助
Ⅶ 如何添加php环境变量
右击我的电脑 再属性 再高级 再环境变量 再系统变量里有个path 双击打开来 把你的PHP路径 加个分号再前面 添加进去就OK了!
Ⅷ env变量为null如何解决
打开 .env 文件看,这些都是有值的:
APP_ENV=local
APP_KEY=base64:JHE5bOkRg283uT0n1Zq/GgvGEer8ooYiB42/wIcCyvo=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://www.tanteng.me
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tanteng.me
DB_USERNAME=homestead
DB_PASSWORD=secret
如图所示:
原因何在?
在 Laravel 中,如果执行php aritisan config:cache命令,Laravel 将会把 app/config 目录下的所有配置文件“编译”整合成一个缓存配置文件到 bootstrap/cache/config.php,每个配置文件都可以通过env函数读取环境变量,这里是可以读取的。但是一旦有了这个缓存配置文件,在其他地方使用env函数是读取不到环境变量的,所以返回null.
让我们看看这段代码,Illuminate/Foundation/Bootstrap/DetectEnvironment.php line 18:
public function bootstrap(Application $app)
{
if (! $app->configurationIsCached()) {
$this->($app);
try {
(new Dotenv($app->environmentPath(), $app->environmentFile()))->load();
} catch (InvalidPathException $e) {
//
}
}
}
这个方法在框架启动后就会运行,这段代码说明了如果存在缓存配置文件,就不会去设置环境变量了,配置都读缓存配置文件,而不会再读环境变量了。
因此,在配置文件即 app/config 目录下的其他地方,读取配置不要使用env函数去读环境变量,这样你一旦执行php artisan config:cache之后,env函数就不起作用了。所有要用到的环境变量,在 app/config 目录的配置文件中通过 env 读取,其他地方要用到环境变量的都统一读配置文件而不是使用env函数读取。
Ⅸ 什么是php环境变量 都有些什么语法
$_SERVER
变量由 web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
$_GET
经由 URL 请求提交至脚本的变量。类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用)。
$_POST
经由 HTTP POST 方法提交至脚本的变量。类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用)。
$_COOKIE
经由 HTTP Cookies 方法提交至脚本的变量。类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用)。
$_FILES
经由 HTTP POST 文件上传而提交至脚本的变量。类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用)。
详细信息请参阅 POST 方法上传。
$_ENV
执行环境提交至脚本的变量。类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用)。
$_REQUEST
经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任。所有包含在该数组中的变量的存在与否
以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义。此数组在 PHP 4.1.0 之前没有直接对应的版本。
参见 import_request_variables()。
$_GLOBALS
Ⅹ php 读取、写入 到php文件里 ,写入、读取 对应的变量
给你个简单的Demo,你可以直接粘贴代码测试,我也上传了附近,你也可以下载来测试
a.php
<?php
$name='51MakeIt';
$age=30;
$sex='Boy';
$html=$name.'<br/>'.$age.'<br/>'.$sex;
$w_file='demo.php';
if(function_exists('file_put_contents')){
file_put_contents($w_file,$html);
}else{
$handle=fopen($w_file,'w+');
fwrite($handle,$html);
fclose($handle);
}
echo"<pre>";
print_r('<ahref="demo.php">查看</a>');
?>