发布网友 发布时间:2024-09-17 03:35
共1个回答
热心网友 时间:2024-10-04 17:16
如何让PHP能够读取系统环境变量一般情况下,都能实现显示phpinfo()的页面。就从能够显示该页面之后出现的问题说起。php的问题都会显示在phpinfo()页面上。首先查看自己的php.ini的路径是否正确。Q:我已经配置了php.ini文件,但重新启动服务器后为什么没有任何效果?A:这个问题主要有这几种情况。第一个原因是由于系统所读取的php.ini文件与你当时修改的php.ini文件不一致造成的1、可以通过phpinfo()的ConfigurationFile(php.ini)Path选项查看当前PHP服务器读取的是哪一个php.ini2、如果你要更改php.ini的文件存取位置,可参考php.ini的搜索顺序,如下所示:a)SAPI模块所指定的位置(Apache2中的PHPIniDir指令,CGI和CLI中的-c命令行选项,NSAPI中的php_ini参数,THTTPD中的PHP_INI_PATH环境变量)b)HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath(Windows注册表位置)c)PHPRC环境变量d)当前工作目录(对于CLI)e)web服务器目录(对于SAPI模块)或PHP所在目录(Windows下其它情况)f)Windows目录(C:windows或C:winnt),或--with-config-file-path编译时选项指定的位置3、一般做法:通过设置PHPRC环境变量,a)操作:右击我的电脑-属性-高级-环境变量b)在系统变量下新建一个“变量名为PHPRC,变量值为你的php.ini文件所地文件路径”的环境变量第二个原因是:PHP没有找到相应的扩展库1、查看PHP找到的扩展库位置:在phpinfo()的extension_dir选项可以看到2、在php.ini更改extension_dir文件第三个原因:没有完全重启IIS1、对php.ini的修改必须完全重启IIS才能起作用,而不能只是对当前站点进行重启。2、进入cmd,停止服务器:netstopiisadmin;启动服务器:netstartw3svcQ:我的PHP怎么没有办法激活MySql扩展库A:在PHP5.0以上版本,MySQL默认未启用,因此需要咱们进行手工激活。1、在PHP运行MySql,必须在php.ini中激活php_mysql.dll动态连接库,另外还需要访问MySQL客户端连接库即libmysql.dll文件2、可以通过php.ini中的extension激活php_mysql.dll动态连接库;而libmysql.dll文件必须放在Windows的系统路径PATH才能访问,可以通过把libmysql.dll复制到system32目录下,也可以在PATH环境变量中新增一个路径。3、建议做法:通过设置PATH,方便以后的php升级,在系统环境变量中的PATH后增加“libmysql.dll”所在的文件夹即可。记得通过“;”号隔开4、[案例]最近,服务器总是找不到MySql扩展库,导致程序无法运行。因此,把所有文件删除后重新配置PHP服务器。但最后在安装MySql的时候,却始终无法激活MySql扩展库。在phpinfo()中找到的信息如下:PATH:c:phpPHPRC:C:phpextension_dir:c:phpext另外,我测试了将其它的库激活,如msql、gd2、xml,在phpinfo()都可以正常显示证明PHP能找到php_mysql.dll动态连接库,而MySql的运行的另一个条件是能够讯问MySQL客户端连接库即libmysql.dll文件,看来问题就在这里了。我对C盘搜索libmysql.dll文件,发现在system32和php文件夹各有一个文件,做好备份后,我尝试删除system32的libmysql.dll文件,发现被锁死,无法删除,却可以重新命名,我随便修改了名称,再重新启动IIS,服务器运行正常。补充一点:如果ConfigurationFile(php.ini)Path显示为C:Windows就说明,php.ini文件没有读取到。另外,我发现,在用IIS整合php时,有两种方式:ISAPI与CGI模式这两种方式,我们都可以看到phpinfo页面但是使用ISAPI模式,无法读取环境变量,所以通过环境变量PHPRC设置的php.ini路径无法找到。使用CGI就可以,这样就不必把好多文件拷到系统文件下。
php扩展在全局变量中不存在但是打印phpinfo却存在?说明:我本地装的php集成环境MAMPPRO
最近遇到一个比较奇怪的问题,在本地搭建了PHP运行环境,并且安装了相应的PHP扩展并且在测试页面中通过打印phpinfo能看到所安装的扩展是正常的,但是php-m|grepswoole没有显示swoole已经配好了php环境变量
装好了php,php一些常用的扩展后就开始配置php系统环境变量,因为我用的macbookpro所以配置命令如下
查看环境变量是否OK
以为一切OK的我想试试swoole的性能是否真有官网说的那么厉害于是就准备了一段测试脚本
测试脚本
终端执行
然后奇怪的是swoole的http服务并没有起来????
然后查看php错误日志惊奇!
确定浏览器打印的phpinfo是有swoole扩展的,而且终端的php跟界面的php是同一个版本的php百思不解然后我在终端
结果很意外终端里面找不到swoole扩展!!!可是浏览器里打印有的啊而且是同一个PHP版本??奇怪了
然后在终端执行php-i这个是在终端打印phpinfo
然后对比这个
终端打印phpinfo
浏览器打印phpinfo
是同一个PHP没错了。。。
然后再对比php.ini引用路径
终端的:
浏览器的
终于找到原因了两个地方引用的php.ini不一样于是在终端引用的php.ini同样加上extension=swoole.so即可
MacM1安装php开发环境去年年底,苹果推出了新款的M1芯片的mac,最近刚好要换电脑,考虑对比再三,还是选择了M1芯片的mac;刚拿到手以后,担心会有软件不兼容啥的,网上也推荐作为主力开发的笔记本的话,不推荐M1,但是现在已经完全配置好了开发环境,安全下车了。下面就来简单介绍下安装过程中的步骤:
注意:如果没有安装brew,需要先安装brew,使用arch-arm64brewinstall安装
首先搜索是否包含想要安装的mysql版本,如下图:
此处选择mysql@5.7这个版本,我本地已经安装完成了
安装完成后,需要添加环境变量,这样才能在任何目录下面直接打mysql访问
先查询有哪些php的版本,之前看网上说的M1,目前还不支持php7.3以下的版本,所有我安装了php7.4
等待安装完成后,可以开始部署项目了,由于我的项目是thinkphp框架开发的,而且用到了redis,所以,这边需要先安装redis依赖
安装phpredis依赖(此处使用pecl安装,网上有很多使用编译安装的方法,那种方法比较麻烦,而且需要配置的地方比较多,pecl安装的话,快捷方便)
这个安装完成后,就只需要去nginx目录下面配置项目文件就OK了。
其他的不多说,主要提一点,就是thinkphp框架,重定向那边的配置,location里面的配置需要修改下,如下图:
修改完成后,重启服务器,还要重启php-fpm,这个是关键
php服务器变量$_SERVER服务器环境变量$_ENV
PHP?$_SERVER变量
$_SERVER是一个包含诸如头信息(header)、路径(path)和脚本位置(scriptlocations)的数组。它是PHP中一个超级全局变量,我们可以在PHP程序的任何地方直接访问它。
$_SERVER包含着众多的信息,你可以尝试直接打印它:
print_r($_SERVER);
$_SERVER数组元素
更多情况下,我们只需要$_SERVER数组中的某些元素(数组单元)。$_SERVER数组包含的元素如下:
页面程序相关
$_SERVER[‘PHP_SELF’]:相对于网站根目录的路径及PHP程序名称,与documentroot相关。
$_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’]:请求开始时的时间戳,从PHP5.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模块运行时,进行HTTPDigest认证的过程中,此变量被设置成客户端发送的“Authorization”HTTP头内容(以便作进一步的认证操作)。
$_SERVER[‘PHP_AUTH_USER’]:当PHP运行在Apache或IIS(PHP5是ISAPI)模块方式下,并且正在使用HTTP认证功能,这个变量便是用户输入的用户名。
$_SERVER[‘PHP_AUTH_PW’]:当PHP运行在Apache或IIS(PHP5是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也就为空了。
如何创建phpinfo查看php信息1、方法一:
命令行查询,如果已经配置好环境变量,直接在命令行中输入php-v,将会显示php的版本信息。如果没有配置环境变量,直接在命令行中进入到php的安装目录后,再输入命令php-v,在安装目录下输入查询命令,可以看到输出的版本信息为PHP5.3.29。
2、方法二:
(1)使用预定义常量PHP_VERSION查询,新建一个php文件,在里面输入?php???echoPHP_VERSION;?。
(2)在浏览器中输出对应的网址,就可以查看到php的版本信息。
3、方法三:
(1)使用phpversion()函数查询,新建一个php文件,在文件中输入?php???echophpversion();?即可。
(2)在浏览器中访问,可以看到浏览器页面上返回的php版本信息,跟预定义常量PHP_VERSION显示效果一样。
4、方法四:
(1)使用phpinfo()函数查询,新建一个php文件,在文件中输入?php???echophpinfo();?即可。
(2)在浏览器中访问,可以看到不仅可以看到PHP的版本信息,还能看到其它很多关于PHP的信息。