|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?成绩 装置
这节将讲述装置过程当中最多见的成绩。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. 8. 某些操作体系: 我装置PHP没失足,可是我启动Apache时,失掉一个 undefined symbol errors:- [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
复制代码 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:
复制代码 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模块利用,那末请按上面的步调做:
中断 httpd 历程
gdb httpd
中断 httpd 历程
> run -X -f /path/to/httpd.conf
阅读你方才失足的 URL
> run -X -f /path/to/httpd.conf
假如你还有 core dump, gdb 如今会告诉你
打入: bt
在你的 bug report里应当包括backtrace 。 这些会被发往 http://bugs.php.net/
假如你的剧本利用了正则表达式函数 (ereg() and friends), 你应当确保你编译 PHP 和 Apache 用的是统一个正则表达式包。 在 PHP 和 Apache 1.3.x 这个进程是主动停止的。
3. Unix: 我利用 RPMS 装置 PHP , 但Apache 不撑持 PHP页面! 怎样办?
假定你装置了 Apache 和 PHP(从 RPM ) , 你需求反正文或增添一些行在你的 http.conf 文件里:- # Extra ModulesAddModule mod_php.cAddModule mod_php3.cAddModule mod_perl.c# Extra ModulesLoadModule php_module modules/mod_php.soLoadModule php3_module modules/libphp3.so /* for PHP 3 */LoadModule php4_module modules/libphp4.so /* for PHP 4 */LoadModule perl_module modules/libperl.so
复制代码 And add:- AddType application/x-httpd-php3 .php3 /* for PHP 3 */AddType application/x-httpd-php .php /* for PHP 4 */
复制代码 ... 到全局域里, 或到你想要的 撑持PHP的虚拟域里。
4. 我利用 RPMS 装置 PHP 3 , 然而它没有我需求的数据库选项撑持! 我该怎样办?
由于 PHP 3 内建撑持的关系, 编译一个完全的可适于一切使用的 PHP RPM是相当坚苦的。 在 PHP 4有谈到这点。 对 PHP 3, 咱们只好建议你利用INSTALL.REDHAT (在 PHP包里)描写的机制。 假如你必定要利用 RPM 版的 PHP 3, 读...
RPM 保证理器设置 RPMS 复杂的装置,不带数据库撑持 and 由于RPMS 利用 /usr/ 而不是尺度的 /usr/local/ 目次寄存文件. 你需求告知 RPM 文件你要撑持哪一种数据库和它们的最下级目次的地位。
上面的例子将注释在Apache形式下如何撑持通行的数据库Mysql.
固然一切的这些可以稍作修正,以撑持其它的PHP撑持的数据库。咱们假定你装置了 MySQL and Apache ,完整是用 RPMS 装置的。
起首,移去 mod_php3 :
然后获得rpm包并装置, 不是 --重编译- rpm -Uvh mod_php3-3.0.5-2.src.rpm
复制代码
编纂/usr/src/redhat/SPECS/mod_php3.spec 文件
在 %build 一节里增添你想要的数据库撑持, 和途径信息。
对 MySQL 你应当增添:%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.spec
复制代码
Then install the rpm- cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:0
复制代码 重启 Apache,你已失掉了rpm下的Mysql的撑持。 注重到这类做法比你从头失掉一个 PHP 3 的tarball 代码,依照 INSTALL.REDHAT 的指引一步一步做要轻易很多。
5. 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/httpd 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是一个剧本引擎。 另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学。 |
|