首页 > 编程技术 > php

我按照安装步骤在UNIX上安装PHP到Apache的模块中,

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

发生这种情况是因为某些原因使PHP的模块没有顺利运行。请在寻求帮助之前,先检查下面三个步骤:
确认你运行的httpd程序是你刚编译过的。请运行/path/to/binary/httpd -l。如果你没有看到 mod_php3.c在列表中,请重装Apache程序。
确定你在Apache的配置文件.conf (如 httpd.conf)中加入了MIME类型,如 AddType application/x-httpd-php3 .php3,同时也要确定上面的AddType没有放在 a <Virtualhost>或<Directory>二个区域之中,否则会让你加入的MIME 类型无效。
最后,由于Apache 1.2.x和Apache 1.3.x的系统配置文件的位置不同。你需要检查真正的配置文件是哪个,同时看里面有没有为PHP加上AddType类型。你可以放个错误的配置语法在httpd.conf中,看运行httpd时有没有错误信息来确定配置文件到底对不对。
如果你使用模块方式运行PHP,函数getallheaders()可以达到你的要求。因此照下面的程序可以显示你所有请求的HTTP变量值:
$headers = getallheaders();
for(reset($headers); $key = key($headers); next($headers))
{ echo "headers[$key] = ".$headers[$key]."
n"; }
有两种方法检查。第一种,当Apache建立apxs Perl程序时,因为一些原因,它没有包含正确的编译参数。编辑你apxs(在/usr/local/apache/bin/apxs或者 /usr/sbin/apxs)并检查下列几行:
my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
如果你看到上面那样子,就是你发生错误的地方了,改成下面几行的样子:
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared);# substituted via Makefile.tmpl
第二种可能的原因只有在RedHat 6.1上发生。RedHat 上的apxs配置有问题,如下行:
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
如果你看到上面那行,应该改成下面这行:
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install

确定track_vars在你php3.ini文件中。如果你在编译PHP时加上"--enable-track-vars",肯定就有了。你要在下面二种方式中选择一种:在编译时加入;或是在每个脚本的第一行加入 <?php_track_vars?>字符串。当track_vars打开时,会建立三个数组: $HTTP_GET_VARS、$HTTP_POST_VARS 和 $HTTP_COOKIE_VARS。因此,建立通用的 POST方法脚本,可以用下面的程序:
while (list($var, $value) = each($HTTP_POST_VARS))
{ echo "$var = $value
n"; }
首先,请参考英文的 addslashes() 函数,它能达到你想要的功能,你也应参考php3.ini设定的 magic_quotes_gpc 选项。
函数 ereg_replace()可以达到你要的结果,做法如下:
$escaped = ereg_replace("'", "'", $input);
标签:[!--infotagslink--]

您可能感兴趣的文章: