澳门新葡亰娱乐官网PHP安装问题

安装这节将讲述安装过程中最常见的问题。PHP 适用于 几乎任何的 OS (或许 OSX
之前的 MacOS 除外 ), 和几乎任何的WEB 服务器。要安装PHP, 跟着
发行版里的安装 文件的指引. Windows 用户也应该读install.txt 文件.
这儿也有一些帮助文档 。 1. Unix/Windows: 我的php.ini 应该放在哪? 2.
Unix: 我安装了 PHP, 但我每次加载一个文档, 会得到下面的消息: ‘Document
Contains No Data’! 怎么回事? 3. Unix: 我使用 RPMS 安装 PHP , 但Apache
不支持 PHP页面! 怎么办? 4. Unix: 我使用 RPMS 安装 PHP 3 ,
但是它没有我需要的数据库编译支持! 我该怎么办? 5. Unix: 我用 FrontPage
扩展包对Apache打了补丁, 忽然 PHP 停止工作。 是PHP 和 Apache FrontPage
包不兼容吗 ? 6. Unix/Windows:
我安装了PHP,但在浏览器里看我的PHP页面时,空白一片。 7. Unix/Windows:
我安装了PHP,但在浏览器里看我的PHP页面时,我得到一个 server 500 error.

  Apache是目前应用最广的Web服务器,PHP3是一种类似ASP的脚本语言,目前的发展趋势大有超过Perl之势,而MySQL是一个轻量级的数据库系统,特别是用于网站建设,这3个软件均是自由软件,是架设数据库驱动的动态网站的最佳排档。

  1. 某些操作系统: 我安装PHP没出错,可是我启动Apache时,得到一个 undefined
    symbol errors: [mybox:user /src/php4] root# apachectl configtest
    apachectl: /usr/local/apache/bin/ Undefined
    symbols:_compress_uncompress9. Windows:
    我安装了PHP,但在浏览器里看我的PHP页面, 得到如下错误: cgi error: The
    specified CGI application misbehaved by not returning a complete set of
    HTTP headers. The headers it did return are:10. Windows:
    我严格按照install的要求,可是还是不能让我的php在IIS下工作。 1.
    Unix/Windows: 我的php.ini 文件应该放在哪? UNIX下默认它应该放在
    /usr/local/lib 目录下。 这是它的 install-path/lib.
    很多人会在编译时改变它,使用–with-config-file-path 标志。 例如,
    你可以这样设它: –with-config-file-path=/etc然后你可以复制源程序包里的
    php.ini-dist 到 /etc/php.ini ,编辑它满足你的本地化需求。 Windows下
    php.ini默认的路径是 Windows 系统目录. 如果你在使用 Apache webserver,
    php.ini 则最先在 Apaches 安装目录下被查找, 例如: c:/program
    files/apache group/apache. 这样你可以有不同的 php.ini 对应不同版本的
    Apache。 更多细节请查阅 configuration file. 2. Unix: 我安装了 PHP,
    但我每次加载一个文档, 会得到下面的消息: ‘Document Contains No Data’!
    怎么回事?这可能是因为你的 PHP 发生了core-dumping错误。
    查找你的服务器错误日志文件,看看是否属于这种情况。
    然后报告这个错误。如果你知道怎样使用 ‘gdb’,你可以提供一个 backtrace
    在你的错误报告里。这将会对开发人员解决
    这个问题有很大帮助。如果你是在将PHP作为Apache模块使用,那么请按下面的步骤做:
    停止 进程 gdb 停止 进程 run -X -f /path/to/ 浏览你刚才出错的 URL run -X
    -f /path/to/ 如果你还有 core dump, gdb 现在会通知你 打入: bt 在你的 bug
    report里应该包含backtrace 。 这些会被发往
    如果你的脚本使用了正则表达式函数 (ereg() and friends), 你应该确保你编译
    PHP 和 Apache 用的是同一个正则表达式包。 在 PHP 和 Apache 1.3.x
    这个过程是自动进行的。 3. Unix: 我使用 RPMS 安装 PHP , 但Apache 不支持
    PHP页面! 怎么办? 假设你安装了 Apache 和 PHP ,
    你需要反注释或者增加一些行在你的 文件里: # Extra ModulesAddModule
    mod_php.cAddModule mod_php3.cAddModule mod_perl.c# Extra
    ModulesLoadModule php_modulemodules/mod_php.soLoadModule
    php3_modulemodules/libphp3.so/* for PHP 3 */LoadModule
    php4_澳门新葡亰娱乐官网 ,modulemodules/libphp4.so/* for PHP 4 */LoadModule
    perl_modulemodules/libperl.soAnd add: AddType application/x- .php3/*
    for PHP 3 */AddType application/x- .php/* for PHP 4 */… 到全局域里,
    或者到你想要的 支持PHP的虚拟域里。 4. 我使用 RPMS 安装 PHP 3 ,
    但是它没有我需要的数据库选项支持! 我该怎么办? 因为 PHP 3 内建支持的关系,
    编译一个完整的可适于所有应用的 PHP RPM是相当困难的。 在 PHP
    4有谈到这点。 对 PHP 3, 我们只好建议你使用INSTALL.REDHAT 描述的机制。
    如果你一定要使用 RPM 版的 PHP 3, 读… RPM 包管理器设置 RPMS
    简单的安装,不带数据库支持 and 因为RPMS 使用 /usr/ 而不是标准的
    /usr/local/ 目录存放文件. 你需要告诉 RPM
    文件你要支持哪种数据库以及它们的最上级目录的位置。
    下面的例子将解释在Apache模式下怎样支持通行的数据库Mysql.
    当然所有的这些可以稍作修改,以支持其它的PHP支持的数据库。我们假设你安装了
    MySQL and Apache ,完全是用 RPMS 安装的。 首先,移去 mod_php3 : rpm -e
    mod_php3然后取得rpm包并安装, 不是 –重编译 rpm -Uvh
    mod_php3-3.0.5-2.src.rpm编辑/usr/src/redhat/SPECS/mod_php3.spec 文件
    在 %build 一节里增加你想要的数据库支持, 以及路径信息。 对 MySQL
    你应该增加: –with-mysql=/usr /%build 节看起来象: ./configure
    –prefix=/usr /–with-apxs=/usr/sbin/apxs
    /–with-config-file-path=/usr/lib /–enable-debug=no /–enable-safe-mode
    /–with-exec-dir=/usr/bin /–with-mysql=/usr
    /–with-system-regex改动完成后,象下面这样重编rpm : rpm -bb
    /usr/src/redhat/SPECS/mod_php3.specThen install the rpm rpm -ivh
    /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm重启
    Apache,你已经得到了rpm下的Mysql的支持。 注意到这种做法比你重新得到一个
    PHP 3 的tarball 代码,按照 INSTALL.REDHAT 的指引一步一步做要容易得多。
  2. Unix: 我用 FrontPage 扩展包对Apache打了补丁, 忽然 PHP 停止工作。
    是PHP 和 Apache FrontPage 包不兼容吗 ? 不是, PHP 和
    FrontPage扩展包运行得很好.。问题是FrontPage 包修改了几个Apache
    结构参数,而PHP要用到它们.在FrontPage扩展包被打上后, 重新编译 PHP (使用
    ‘make clean ; make’) ,会解决这个问题。 6. Unix/Windows:
    我安装了PHP,但在浏览器里看我的PHP页面时,空白一片。
    在浏览器里用’查看源文件’看你的脚本,你可能会发现你看到的是源程序。
    这表示 web server
    并没有送脚本到PHP去执行。肯定是服务器配置上哪儿出了错。
    仔细检查PHP安装的 server 配置。7. Unix/Windows:
    我安装了PHP,但在浏览器里看我的 PHP页面时,我得到一个 server 500 error。
    这是服务器在运行 PHP 时发生了错误。
    为了看到可读的错误信息,在命令行,改变目录到 (php.exe Windows)所在目录,
    运行 php -i.
    如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。
    如果你得到满屏的HTML代码 (phpinfo() 函数的输出),
    那么PHP工作正常,这个错误就是由于服务器配置引发的,应该仔细检查。8.
    某些操作系统: 我安装PHP没出错,可是我启动Apache时,得到一个 undefined
    symbol errors: [mybox:user /src/php4] root# apachectl configtest
    apachectl: /usr/local/apache/bin/ Undefined
    symbols:_compress_uncompress这个问题其实与 PHP 无关, 而与 MySQL
    客户端库有关。 –with-zlib,有些操作系统需要,而有些不需要。MySQL
    FAQ已经讲述了这个问题。 9. Windows:
    我安装了PHP,但在浏览器里看我的PHP页面, 得到如下错误: cgi error: The
    specified CGI application misbehaved by not returning a complete set of
    HTTP headers. The headers it did return are:这是 PHP
    根本没有产生任何输出。 为了看到可读的错误信息,在命令行,改变目录到
    (php.exe Windows)所在目录, 运行 php -i.
    如果有任何问题,详细的错误信息就显示出来了,它会告诉你下一步该做什么。
    如果你得到满屏的HTML代码 (phpinfo() 函数的输出), 那么PHP工作正常。
    一旦PHP在命令行模式下工作,再看看你的脚本程序,
    它还是失败,可能是因为以下原因: 你的PHP脚本的权限许可。 php.exe,
    php4ts.dll, php.ini 或者任何你可能装入的PHP文件,它样都必须能被匿名
    internet 用户 ISUR_machinename 访问。
    脚本文件根本不存在(或者不是你认为的位置。)请注意在IIS里,你能够阻塞这个错误,做法是在设置脚本映射目录时,
    选上’check file exists’框。这样如果脚本不存在,服务器会返回一个404错误。
    这样做也有其它的一些好处, 就是IIS仅为你做经过授权的操作。 10. Windows:
    我严格按照install的要求做,可是还是不能让我的php在IIS下工作。
    确定任何想要运行PHP的用户有操作php.exe的权限! IIS
    使用匿名的internet用户,它是在IIS安装时系统自动增加的。 这个用户需要操作
    php.exe的权限. 还有,任何需要授权的用户也必须有访问 php.exe的权限。 在
    IIS4下,你要告诉它PHP是一个脚本引擎。

  本文只介绍这3个软件的安装,有关PHP和MySQL的编程和使用请见其他资料。

  一、如何获得软件?

  获得这3个软件包的方法很多,目前大多数Linux分发都捆绑了这3个软件包,如RedHat。本文介绍的安装方法是基于从这些软件的官方站点上下载获得的软件包进行的,针对RedHat
Linux 6.1,也介绍它们的安装和配置。

  这3个软件的官方站点是:

  软件 官方网站 当前版本 下载

  Apache 1.3.9 这里

  PHP 3.0.13 这里

  MySQL 3.22.29 这里

  从上述网站上,你应该下在以下软件包:

  软件 文件名

  Apache apache_1.3.9.tar.tgz (apache源代码包)

  PHP php-3.0.13.tar.gz (PHP3源代码包)

  MySQL MySQL-3.22.29-1.i386.rpm (MySQL服务器)

  MySQL-client-3.22.29-1.i386.rpm (MySQL客户实用程序)

  MySQL-devel-3.22.29-1.i386.rpm (MySQL包含文件和库)

  MySQL-shared-3.22.29-1.i386.rpm (客户程序共享库)

  二、安装MySQL

  首先检查你的系统是否已经安装了MySQL:

rpm -q MySQL
            rpm -q MySQL-client
            rpm -q MySQL-devel
            rpm -q MySQL-shared

  如果你的版本比3.22.29旧,而且你想升级MySQL到3.22.29版本,先用rpm
-e删除所有的MySQL包,并:

rpm -i MySQL-3.22.29-1.i386.rpm
            rpm -i MySQL-client-3.22.29-1.i386.rpm
            rpm -i MySQL-devel-3.22.29-1.i386.rpm
            rpm -i MySQL-shared-3.22.29-1.i386.rpm 

  或者直接升级到3.22.29版:

rpm -Uvh MySQL-3.22.29-1.i386.rpm
            rpm -Uvh MySQL-client-3.22.29-1.i386.rpm
            rpm -Uvh MySQL-devel-3.22.29-1.i386.rpm
            rpm -Uvh MySQL-shared-3.22.29-1.i386.rpm 

  安装MySQL服务器时,安装程序会提示你设置root口令,有关MySQL的安装后期设置,请参阅。

  上述安装将MySQL执行文件放在”/usr/bin”目录下,包含文件放在”/usr/include/mysql”目录下,库文件放在”/usr/lib/mysql”目录下。

  三、解压缩apache和php并编译和安装

  如上所述下载apache和php源代码软件包,加入下载的文件放在目录”/apps”下,进入”/apps”目录,用ls检查你有这两个文件:

  apache_1.3.9.tar.gz

  php-3.0.13.tar.gz

  1、解压缩apache并配置

  用下列命令解压缩apache_1.3.9.tar.gz

  tar zxvf apache_1.3.9.tar.gz

  它讲解压缩的文件放在apache_1.3.9目录下。然后配置apache:

  cd apache_1.3.9 ( 进入apache源代码树的目录)

  ./configure –prefix=/www (假如你想安装apache最终安装在目录”/www”下)

  2、解压缩php3并配置和编译

  cd .. (回到上级目录)

  tar zxvf php-3.0.13.tar.gz (解压缩到目录”php-3.0.13″)

  cd php-3.0.13  (进入php3的源代码目录)

  ./configure –with-mysql –with-apache=../apache_1.3.9

  make

  make install

  3、编译和安装apache

  cd ..

  ./configure –prefix=/www
–activate-module=src/module/php3/libphp3.a

  make

  make install (将apache安装到”/www”目录下)

  上述这种方法是将php编译进了apache目标代码,所以其效率和性能上要比DSO方式略好。将php作为apache的一个模块的方法,见后面的介绍。

  4、配置apache

  cd /www (到apache主目录)

  cd conf  (进入配置文件目录)

  编辑”httpf.conf”文件,将”AddType application/x-httpd-php3
.php3″一行的注释去掉,这样对于以”.php3″为后最后缀的文件将作为php脚本文件处理。

  5、启动apache

  关掉正在运行的httpd(有时在系统启动时启动的),重新启动新的httpd:

  cd /www/bin./apachectl start

  用ps aux命令检查httpd已经正确启动。

  6、测试

  lynx localhost

  如果你能看到页面显示,说明你已正确设置和启动了httpd。

  7、测试php

  cd /www/htdocs (进入默认网页存放目录)

  创建一个ex.php3文件,内容如下:

$myvar="Hello,World!";
            echo $myvar;
            phpinfo();
            ?>

  运行些列命令,检查输出是否是”Hello,World”和当前php的设置:

  lynx localhost/ex.php3

  如果是,说明你的apache已经可以处理php脚本文件了。恭喜你!

  8、测试MySQL数据库

  按照上面的方法安装MySQL后,建立一个mydb.dump文件,包含入下内容:

CREATE TABLE employees (  id tinyint(4) DEFAULT '0' NOT NULL
            AUTO_INCREMENT,  first varchar(20),  last varchar(20),
            address varchar(255),  position varchar(50),  PRIMARY KEY (id),
            UNIQUE id (id));
            INSERT INTO employees VALUES (1,'Bob','Smith',
            '128 Here St, Cityname','Marketing Manager');
            INSERT INTO employees VALUES (2,'John','Roberts','45 There St ,
            Townville','Telephonist');
            INSERT INTO employees VALUES (3,'Brad','Johnson','1/34 Nowhere Blvd,
            Snowston','Doorman');

  然后用这个SQL脚本在MySQL中创建一个数据库mydb,在shell下打入下列命令:

  mysql -u root -pyourpasswd mydb

  这里,如果你在案装MySQL后设置了root用户的口令,yourpasswd换成你的口令,如果没有为root设置口令,则去掉-p选项。

  创建后上述数据库后,创建一个php3脚本文件,如test.php3,其内容如下:

$db = mysql_connect("localhost", "root");
            mysql_select_db("mydb",$db);
            $result = mysql_query("SELECT * FROM employees",$db);
            printf("First Name: %s
            n", mysql_result($result,0,"first"));
            printf("Last Name: %s
            n", mysql_result($result,0,"last"));
            printf("Address: %s
            n", mysql_result($result,0,"address"));
            printf("Position: %s
            n", mysql_result($result,0,"position"));
            ?>

  如果root设置了口令,则在上面的$db = mysql_connect(“localhost”,
“root”);中加入口令:

  $db = mysql_connect(“localhost”, “root”,”yourpasswd”);

  然后测试test.php3:

  lynx localhost/test.php3

  其显示的结果应该是:

First Name: Bob
            Last Name: Smith
            Address: 128 Here St, Cityname
            Position: Marketing Manager

  如果是,说明你的php3已经能够处理MySQL数据库了,再次恭喜你!!

  三、将php3编译成apache的一个模块

  上面的方法是将php3编译进了apache的二进制代码中,其优点是配置简单,效率高,但一个更灵活的方法是将php3作为apache的一个DSO(Dynamic
Shared
Object)模块,详见apache文档。下面就介绍如何将php3编译为apache的一个模块。

  1、配置apache

  进入apache源代码目录,运行下列命令,(假定将httpd安装在”/web”目录下)

  cd apache_1.3.9

  ./comfigure –prefix=/www –enable-shared=max

  make (编译apache)

  make install (将apache安装在/web目录下)

  2、配置php3并编译和安装

  假定你已将apache目录下(请记住该目录),进入php3的源代码目录进行配置和编译:

cd php-3.0.13
            ./configure --with-apxs=/web/bin/apxs  --with-config-file-path=/web   --with-mysql
            make  (编译)
            make install (安装libphp3.so)

  上述配置是将php3的配置文件”php3.ini”放在/web目录下,你必须手工将php3源代码目录下的”php3.ini-dist”
拷贝到/web目录下,重新修改/web/conf目录下的httpd.conf文件,加入下列文字以便让apache支持php3脚本文件,它由上述的
make install自动修改:

  AddModule mod_php3.c

  LoadModule php3_module libexec/libphp3.so

  和

  AddType application/x-httpd-php3 .php3重新启动httpd:

  /web/bin/apachectl stop (停止)

  /web/bin/apachectl start (启动)

  3、测试

  你仍然可以用上述的php3脚本的例子进行测试,如果正确,你已经正确地安装了!

  四、如何从RPM包进行安装和配置

  在很多Linux的发行版本中都捆绑了apache、php3和MySQL,由于MySQL本身是以RPM格式分发的,因此其安装上面已经介绍,下面仅介绍apache和php的安装和配置。本文基于RedHat
Linux
6.1。PHP的设计者不建议从RPM配置php3,但它将在php4中解决这个问题。由于从RPM重新配置和安装php比较麻烦,所以以下方法仅供参考。

  1、你需要的rpm文件

  为了重新配置和编译php,你应该下载php3的源代码rpm:php-3.0.12.6.src.rpm。该软件包可生成下列rpm:

php-3.0.12-6.i386.rpm    php-manual-3.0.12-6.i386.rpm
            php-imap-3.0.12-6.i386.rpm  php-ldap-3.0.12-6.i386.rpm
            php-pgsql-3.0.12-6.i386.rpm

  在安装新的rpm之前,你应该首先删除已经的php软件包:

  rpm -e php-imap php-ldap php-pgsql php php-manual

  重新编译php需要以下软件包:

  apache  apache-devel

  postgresql  postgresql-devel

  MySQL-devel

  2、重新配置、编译和安装php3

  安装php3源代码包:

  rpm -i php-3.0.12-6.src.rpm

  它将php源代码安装在/usr/src/redhat目录下,进入该目录,按下面的命令进行配置和编译:

  cd /usr/src/redhat/SPECS

  vi php.spec

  编辑php.spec文件,找到%build小节,在关于./configure的选项部分加入:

  –with-mysql=/usr

  选项,它指出php支持MySQL数据库。

%build
            cd imap-4.5
            make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" lnp
            cd ..
            autoconf
            CFLAGS="-fPIC" ./configure --prefix=/usr            
 --with-apxs=/usr/sbin/apxs             
--with-config-file-path=/etc/httpd             
--enable-safe-mode             
--with-exec-dir=/usr/bin             
--with-system-regex             
--disable-debug             
--with-zlib             
--enable-debugger             
--enable-magic-quotes             
--with-mysql=/usr             
--enable-track-vars

  保存修改,重建rpm包:

  rpm -bb /usr/src/redhat/SPECS/php.spec

  最后,在/usr/src/redhat/RPMS/i386目录下可以找到相应的二进制rpm包,重新安装它们:

  rpm -i /usr/src/redhat/RPMS/i386/*

  3、配置httpd.conf和srm.conf

  在安装好php后,你应该配置httpd以便支持php3脚本。首先编辑/etc/httpd/conf/httpd.conf,找出下列两行,去掉它们前面的注释符#:

  AddModule mod_php3.c

  LoadModule php3_module modules/libphp3.so

  在编译/etc/httpd/conf/srm.conf,去掉下面一行的注释符#:

  AddType application/x-httpd-php3 .php3

  这样,httpd对于以.php3结尾的文件视为php脚本文件。

  4、测试

  你可以用上面的两个例子做测试。

  5、总结

  RedHat等一些Linux发行商虽然在它们的分发中捆绑了上述三个软件包,但php的rpm包初始是不支持MySQL数据库的。另外,原来的mod_php3或mod_php的使用方式已经过时,而新的格式是libphp3.so,因此在RedHat标准的二进制分发中已经不包含
mod_php3或mod_php了。

  如果你想一直使用这三个软件的最新版本,前二种方法最适用。

  上述只是介绍了这三个软件的安装,你必须配置php和MySQL的安全性设置。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图