能显示php环境的函数是(ip/info.php 无法出现 phpinfo 页面,求助)

本文目录
- ip/info.php 无法出现 phpinfo 页面,求助
- 安装好Python后,怎么在浏览器输出,就像PHP安装好环境后输出localhost一样可以在浏览器显示效果
- 如何让PHP能够读取系统环境变量
- php高级函数有哪些
ip/info.php 无法出现 phpinfo 页面,求助
说明: php是一款被广泛使用的编程语言,可以被嵌套在html里用做web程序开发。phpinfo()是用来显示当前php环境的一个函数,许多站点和程序都会将phpinfo放在自己的站点上或者在程序里显示,但是phpinfo里存在一些安全问题,导致精心构造数据就可以产生一个跨站脚本漏洞,可以被用来进行攻击。 漏洞成因: phpinfo页面对输入的参数都做了详细的过滤,但是没有对输出的进行charset的指定,而在一些浏览器里如IE7里,你可以让它自动选择编码或者通过一个iframe页面给它指定编码,这样就可以饶过phpinfo的过滤而产生一个跨站脚本漏洞。
安装好Python后,怎么在浏览器输出,就像PHP安装好环境后输出localhost一样可以在浏览器显示效果
Python可以作为web开发语言来进行使用,但是它不是专门用来做web开发来使用的,所以你无法直接安装以后就能在浏览器当中输出。当然既然可以用来做web语言开发,也就是或它在进行一定配置以后可以在浏览器当中进行输出。
我们先编写hello.py,实现Web应用程序的WSGI处理函数:
# hello.py
def application(environ, start_response):
start_response(’200 OK’, )
return ’《h1》Hello, web!《/h1》’
然后,再编写一个server.py,负责启动WSGI服务器,加载application()函数:
# server.py
# 从wsgiref模块导入:
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数:
from hello import application
# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
***隐藏网址***
print "Serving HTTP on port 8000..."
# 开始监听HTTP请求:
***隐藏网址***
确保以上两个文件在同一个目录下,然后在命令行输入python server.py来启动WSGI服务器
***隐藏网址***
如何让PHP能够读取系统环境变量
一般情况下,都能实现显示phpinfo()的页面。就从能够显示该页面之后出现的问题说起。 php的问题都会显示在phpinfo()页面上。 首先查看自己的php.ini的路径是否正确。 Q:我已经配置了php.ini文件,但重新启动服务器后为什么没有任何效果? A:这个问题主要有这几种情况。 第一个原因是由于系统所读取的php.ini文件与你当时修改的php.ini文件不一致造成的 1、 可以通过phpinfo()的Configuration File (php.ini) Path选项查看当前PHP服务器读取的是哪一个php.ini 2、 如果你要更改php.ini的文件存取位置,可参考php.ini的搜索顺序,如下所示: a) SAPI 模块所指定的位置(Apache 2 中的 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文件 第三个原因:没有完全重启IIS 1、 对php.ini的修改必须完全重启IIS才能起作用,而不能只是对当前站点进行重启。 2、 进入cmd,停止服务器:net stop iisadmin;启动服务器:net start w3svc Q:我的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:php PHPRC:C:php extension_dir:c:phpext 另外,我测试了将其它的库激活,如msql、gd2、xml,在phpinfo()都可以正常显示 证明PHP能找到php_mysql.dll 动态连接库,而MySql的运行的另一个条件是能够讯问MySQL 客户端连接库即libmysql.dll文件,看来问题就在这里了。 我对C盘搜索libmysql.dll文件,发现在system32和php文件夹各有一个文件,做好备份后,我尝试删除system32的libmysql.dll文件,发现被锁死,无法删除,却可以重新命名,我随便修改了名称,再重新启动IIS,服务器运行正常。 补充一点:如果Configuration File (php.ini) Path 显示为C:Windows 就说明,php.ini文件没有读取到。 另外,我发现,在用IIS整合php时,有两种方式:ISAPI与CGI模式 这两种方式,我们都可以看到phpinfo页面 但是使用ISAPI模式,无法读取环境变量,所以通过环境变量PHPRC设置的php.ini路径无法找到。 使用CGI就可以,这样就不必把好多文件拷到系统文件下。
php高级函数有哪些
PHP高级函数
1、call_user_func
// 官网地址:
***隐藏网址***
// 官网地址:
***隐藏网址***
// 官网地址:
***隐藏网址***
***隐藏网址***
//为数组的每个元素应用回调函数
示例:
$str = ’1 ,2,3’;
$res = array_map(function ($v) {
return intval(trim($v)) * 2;
}, explode(’,’, $str));
$res的返回结果:
array(3) { =》 int(6) }5、strpos
***隐藏网址***
//查找字符串首次出现的位置,从0开始编码,没有找到返回false
示例:
$time = "2019-03-02 12:00:00";
if(strpos($time,’:’) !== false){
$time = strtotime($time);
}
echo $time;6、array_reverse
***隐藏网址***
//返回单元顺序相反的数组
示例:
$time = "12:13:14";
$arrTime = array_reverse(explode(’:’,$time));
var_dump($arrTime);
array(3) { =》 string(2) "12" }7、pow
***隐藏网址***
//指数表达式
示例:
$time = "12:13:14";
$arrTime = array_reverse(explode(’:’,$time));
$i = $s = 0;
foreach($arrTime as $time){
$s += $time * pow(60,$i); // 60 的 $i 次方
$i ++;
}
var_dump($s);
int(43994)8、property_exist
***隐藏网址***
// 检查对象或类是否具有该属性
//如果该属性存在则返回 TRUE,如果不存在则返回 FALSE,出错返回 NULL
示例:
class Test
{
public $name = ’daicr’;
public function index()
{
var_dump(property_exists($this,’name’)); // true
}
}9、passthru
***隐藏网址***
//执行外部程序并且显示原始输出
//功能和exec() system() 有类似之处
示例:
passthru(Yii::$app-》basePath.DIRECTORY_SEPARATOR . ’yii test/index’);10、array_filter
***隐藏网址***
//用回调函数过滤数组中的单元
示例:
class TestController extends yiiconsoleController
{
public $modules = ’’;
public function actionIndex()
{
//当不使用callBack函数时,array_filter会去除空值或者false
$enableModules = array_filter(explode(’,’,$this-》modules));
var_dump(empty($enableModules)); //true
//当使用callBack函数时,就会用callBack过滤数组中的单元
$arr = ;
$res = array_filter($arr,function($v){
return $v & 1; //先转换为二进制,在按位进行与运算,得到奇数
});
var_dump($res);
//array(2) { =》 int(3) }
}
}11、current
***隐藏网址***
//返回数组中的当前单元
$arr = ;
$str1 = current($arr); //初始指向插入到数组中的第一个单元。
$str2 = next($arr); //将数组中的内部指针向前移动一位
$str3 = current($arr); //指针指向它“当前的”单元
$str4 = prev($arr); //将数组的内部指针倒回一位
$str5 = end($arr); //将数组的内部指针指向最后一个单元
reset($arr); //将数组的内部指针指向第一个单元
$str6 = current($arr);
$key1 = key($arr); //从关联数组中取得键名
echo $str1 . PHP_EOL; //BMW
echo $str2 . PHP_EOL; //bicycle
echo $str3 . PHP_EOL; //bicycle
echo $str4 . PHP_EOL; //BMW
echo $str5 . PHP_EOL; //airplane
echo $str6 . PHP_EOL; //BMW
echo $key1 . PHP_EOL; //car
var_dump($arr); //原数组不变 12、array_slice
***隐藏网址***
//从数组中取出一段
示例:
$idSet = ;
$total = count($idSet);
$offset = 0;
$success = 0;
while ($offset 《 $total){
$arrId = array_slice($idSet,$offset,5);
//yii2的语法,此处,注意array_slice的用法就行
$success += $db-》createCommand()-》update($table,)-》execute();
$offset += 50;
}
$this-》stdout(’共:’ . $total . ’ 条,成功:’ . $success . ’ 条’ . PHP_EOL,Console::FG_GREEN); //yii2的语法13、mb_strlen()
***隐藏网址***
//获取字符串的长度
//strlen 获取的是英文字节的字符长度,而mb_stren可以按编码获取中文字符的长度
示例:
$str1 = ’daishu’;
$str2 = ’袋鼠’;
echo strlen($str1) . PHP_EOL; //6
echo mb_strlen($str1,’utf-8’) . PHP_EOL; //6
echo strlen($str2) . PHP_EOL; // 4 一个中文占 2 个字节
echo mb_strlen($str2,’utf-8’) . PHP_EOL; //2
echo mb_strlen($str2,’gb2312’) . PHP_EOL; //2 14、list
***隐藏网址***
//把数组中的值赋给一组变量
示例:
list($access,$department)= ;
var_dump($access); // all15、strcasecmp
***隐藏网址***
//二进制安全比较字符串(不区分大小写)
//如果 str1 小于 str2 返回 《 0; 如果 str1 大于 str2 返回 》 0;如果两者相等,返回 0。
示例:
$str1 = ’chrdai’;
$str2 = ’chrdai’;
var_dump(strcasecmp($str1,$str2)); // int 016、fopen rb
***隐藏网址***
//1、使用 ’b’ 来强制使用二进制模式,这样就不会转换数据,规避了widown和unix换行符不通导致的问题,
//2、还有就是在操作二进制文件时如果没有指定’b’标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于
字符的奇怪问题。
示例:
$handle = fopen($filePath, ’rb’);17、fseek
***隐藏网址***
//在文件指针中定位
//必须是在一个已经打开的文件流里面,指针位置为:第三个参数 + 第二个参数
示例:
//将文件指针移动到文件末尾 SEEK_END + 0
fseek($handle, 0, SEEK_END);18、ftell
***隐藏网址***
//返回文件指针读/写的位置
//如果将文件的指针用fseek移动到文件末尾,在用ftell读取指针位置,则指针位置即为文件大小。
示例:
//将文件指针移动到文件末尾 SEEK_END + 0
fseek($handle, 0, SEEK_END);
//此时文件大小就等于指针的偏移量
$fileSize = ftell($handle);19、basename
***隐藏网址***
//返回路径中的文件名部分
示例:
echo basename(’/etc/sudoers.d’); // sudoers ,注意没有文件的后缀名,和pathinfo($filePath)功能差不多20、pathinfo
***隐藏网址***
//返回文件路径的信息
示例:
$pathParts = pathinfo(’/etc/php.ini’);
echo $pathParts . PHP_EOL; // /etc ,返回路径信息中的目录部分
echo $pathParts . PHP_EOL; // php.ini ,包括文件名和拓展名
echo $pathParts . PHP_EOL; // ini ,拓展名
echo $pathParts . PHP_EOL; // php ,只有文件名,不包含拓展名 ,和basename()函数功能差不多21、headers_sent($file, $line)
***隐藏网址***
//检测 HTTP 头是否已经发送
***隐藏网址***
//2、可选参数$file和$line不需要先定义,如果设置了这两个值,headers_sent()会把文件名放在$file变量,把输出开始的行号放在$line变量里22、header(’$name: $value’, $replace)
***隐藏网址***
//发送原生 HTTP 头
//1、注意:header必须在所有实际输出之前调用才能生效。
//2、header的$replace参数默认为true,会自动用后面的替换前面相同的头信息,如果设为false,则强制使相同的头信息并存
示例:
public function sendHeader()
{
if (headers_sent($file, $line)) {
throw new Exception("Headers already sent in {$file} on line {$line}");
}
$headers = [
’Content-Type’ =》 [
’application/octet-stream’,
’application/force-download’,
],
’Content-Disposition’ =》 [
’attachment;filename=test.txt’,
],
];
foreach($headers as $name =》 $values) {
***隐藏网址***
$name = str_replace(’ ’, ’-’, ucwords(str_replace(’-’, ’ ’, $name)));
$replace = true;
foreach($values as $value) {
header("$name: $value", $replace);
$replace = false; //强制使相同的头信息并存
}
}
}22、array_multisort($array1, SORT_ASC|SORT_DESC, $array2)
***隐藏网址***
// 对多个数组或多维数组进行排序
//说明: $array1 : 排序结果是所有的数组都按第一个数组的顺序进行排列
// $array2 : 待排序的数组示例:
$array2 = [
1000 =》 [
’name’ =》 ’张三’,
’age’ =》 25,
],
1001 =》 [
’name’ =》 ’李四’,
’age’ =》 26,
],
];
//如果想将 $array2 按照 age 进行排序。
//不过需要注意的是:两个数组的元素个数必须相同,不然就会出现一个警告信息:
//Warning: array_multisort() : Array sizes are inconsistent in ??
//第一步:将age的数据拿出来作为一个单独的数组,作为排序的依据。
$array1 = ;
foreach ($array2 as $key =》 $val) {
array_push($array1, $val);
}
//第二步骤:使用 array_multisort() 进行排序。
array_multisort($array1, SORT_DESC, $array2);
var_dump($array2);
//数组的健名字如果是数字会被重置,字符串不会
// array (size=2)
// 0 =》
// array (size=2)
// ’name’ =》 string ’李四’ (length=6)
// ’age’ =》 int 26
// 1 =》
// array (size=2)
// ’name’ =》 string ’张三’ (length=6)
// ’age’ =》 int 2 23、strtr 转换指定字符串
***隐藏网址***
strtr(string $str , string $from , string $to )
strtr ( string $str , array $replace_pairs )
//例如:
$str = "《div class=’just-sm-6 just-md-6’》《div class=’control_text’》{label}《font》*《/font》《/div》《/div》 《div class=’just-sm-18 just-md-18’》《div class=’control_element’》{input} {hint} {error}《/div》《/div》";
$parts = [
’{label}’ =》 ’年龄’,
’{input}’ =》 ’《input name="age" id="user-age" class="inputs" value="" /》’,
’{hint}’ =》 ’年龄必须是 0-200 直接的数字’,
’{error}’ =》 ’格式不正确’,
];
$string = strtr($str, $parts);
echo htmlspecialchars($string); //《div class=’just-sm-6 just-md-6’》《div class=’control_text’》年龄《font》*《/font》《/div》《/div》 《div class=’just-sm-18 just-md-18’》《div class=’control_element’》《input name="

更多文章:
writeline教程(.NET对称加密实践 (新手教程))
2025年7月18日 11:00
贝尔摩德小说(女主贝尔摩德的柯南同人文,bg,男主要穿越的)
2025年7月23日 10:00
linux配置python3环境变量(linux执行python脚本)
2025年7月14日 19:15
php内置对象(使用JS,通过.opst把数据交给php处理后返回的数据.)
2025年12月11日 08:45
重写protected方法用什么修饰(这四个修饰符sealed protected private public有什么区别)
2026年3月13日 02:00





![enabled by default(data definition has no type or storage class [enabled by default])](/static/images/nopic/26.jpg)













