首页 > 编程技术 > php

PHP Warning: PHP Startup: 扩展名称: Unable to initialize module

发布时间:2016-11-25 17:36

下面我们来看一篇关于PHP Warning: PHP Startup: 扩展名称: Unable to initialize module问题的解决办法,具体如下。

当安装完PHP 某项扩展后重启apache, php -m 时候出现 PHP Warning: PHP Startup: 扩展名称: Unable to initialize module 警告,一般情况下是因为本地有多个 php版本存在,造成php版本不兼容。解决办法如下:

1、在phpize编译时候使用绝对路径,例如: /Applications/XAMPP/bin/phpize (我本地是Mac xampp环境)

2、在configure时候加上--with-php-config 选项来指定使用哪一个版本编译,该选项指定了相对应的 php-config 脚本的路径

sudo ./configure --with-php-config=/Applications/XAMPP/bin/php-config

3、继续下一步

sudo make

sudo make install

安装成功!

500错误是程序错误了那么出现500错误要如何来处理呢,今天我们来看一篇关于帝国备份王php5.4上出现500错误问题的处理办法吧,具体的如下文介绍。

 

问题解决很简单,修改php.ini,把short_open_tag 设为 On

vi etc/php.ini
/short_open_tag
#把默认Off的改成On
:wq
service httpd restart

正常打开,设置好数据库发现还是无法备份,提示:数据库无法备份,请重新填写,真是一波三折了,于是乎又重新查找资料,发现是没有给权限,按照帝国备份王的帮助说明重新分配权限,结果。。。OK

 

今天在命令模式执行一个php文件时提示Deprecated: Directive 'register_globals' is deprecated in PHP 5.3问题了,下面我们要如何处理呢,大家一起来看看


代码事下

I:\>cd www

I:\www>php a.php
PHP Deprecated:  Directive 'register_globals' is deprecated in PHP 5.3 and great
er in Unknown on line 0

Deprecated: Directive 'register_globals' is deprecated in PHP 5.3 and greater in
 Unknown on line 0

/*=================================================
====Name:dedecms 5.7 getshell                  ====
===================================================
====Usage:php  dede.php      ====
===================================================
====Team:C0dePlay  Team      ====
===================================================
====Author: Yaseng           ====
====Date: 2012-06-15 01:35:00                  ====
===================================================*/

I:\www>

原因分析

PHP 5.3 开始,配置文件 php.ini 中的一些配置将会在 PHP 执行时显示过时警告,这些配置将在 PHP6中不再存在,相关功能也将关闭。
define_syslog_variables
register_globals
register_long_arrays
safe_mode
magic_quotes_gpc
magic_quotes_runtime
magic_quotes_sybase

解决问题很简单

只需要在php.ini中,做如下的设置即可。

register_globals = Off

Cannot modify header information ? headers already sent by问题是一个大问题了,今天我们来看一篇关于Cannot modify header information ? headers already sent by问题解决办法。


发送头消息前不能有任何输出

任何修改或者发送HTTP头的函数都必须在 任何形式的输出 之前被调用

一些函数会修改HTTP头:

header/header_remove

session_start/session_regenerate_id

setcookie/setrawcookie

而输出主要可能如下:

隐性输出
在 <?php 之前或者 ?> 之后的空格
UTF-8文件的 BOM头
之前出现的报错信息
显性输出
 print , echo 和其它类似的输出函数
在 <?php 之间嵌入的原始html
为什么会出现Cannot modify header information – headers already sent by错误

为了理解为什么头消息必须早于输出,我们来看看典型的HTTP响应。PHP主要是生成HTML内容,但同时也传输了一组 HTTP/CGI 头给webserver:

HTTP/1.1 200 OK

Powered-By: PHP/5.3.7

Vary: DontTrackMeHere

Content-Type: text/html; charset=utf-8

<html><head><title>PHP page output page</title></head>

<body><h1>Content</h1> <p>Some more output follows...</p>

and <a href="/"> <img" width=100% src=internal-icon-delayed> </a>
输出总是尾随头消息出现。PHP必须首先传头消息给网页服务器,并且只能传一个。在两个换行之后再也不能为头消息添加任何内容了。

当PHP收到第一个输出后(例:print,echo,…),它会刷新并发送设置的所有头信息。然后就可以就可以随心所欲的输出了,但是此时已经无法修改HTTP头信息了。

如何找到早于头消息的输出

报错信息中已经包含了所有相关能够定位错误的信息:

Warning: Cannot modify header information - headers already sent by (output started at /www/usr2345/htdocs/auth.php:52) in /www/usr2345/htdocs/index.php on line 100
可以看到header在文件的100行被调用。

“output started at” 则包含着更重要的信息:直接指名在auth.php的52行已经产生了输出。这就是我们需要找的。

一般情况:

print,echo
原始的HTML语句

<!DOCTYPE html>

<?php
//已经不能修改或发送头消息了
 <?php 之前的空格
<?php
//这里有一个空格
UTF-8 BOM

这是更不易察觉,但比较普遍出现的情况。确保用你的编辑器保存文件以“UTF-8 (no BOM)”方式保存。

报错信息形如 “Unknown on line 0”

一般这样的报错说明输出来自PHP扩展或者PHP.ini设置错误信息

标签:[!--infotagslink--]

您可能感兴趣的文章: