apachephp編譯
⑴ Apache如何開啟Mod_rewrite模塊以及phpWind偽靜態(全偽)
要開啟Apache的Mod_rewrite模塊,首先需要進入Apache配置文件httpd.conf,位於Apache2\conf路徑下。在該文件中,搜索到LoadMole rewrite_mole moles/mod_rewrite.so這一行,去掉前面的#符號,表明該模塊可以被載入。接下來,繼續在httpd.conf文件中搜索AllowOverride None,找到與之相似的配置項,並將其替換為AllowOverride All。這樣做的目的是為了允許伺服器解析.htaccess文件,進而實現URL重寫功能。
完成上述配置後,需要重啟Apache服務以使更改生效。重啟Apache的方法取決於您的操作系統。例如,在Windows上,可以通過Apache安裝目錄下的httpd.exe文件來重啟服務。而在linux上,可以使用命令行工具,如在終端中輸入「sudo service httpd restart」。重啟後,Mod_rewrite模塊應該已經成功啟用。
開啟Mod_rewrite模塊後,可以利用PHPWind的偽靜態功能,為網站提供更簡潔友好的URL。在PHPWind中,通常需要編輯配置文件,以配置URL重寫規則。在httpd.conf文件中,設置AllowOverride All後,可以在網站根目錄下創建.htaccess文件,編寫具體的URL重寫規則。這些規則可以將訪問者請求的URL轉換為PHPWind系統能夠識別的內部URL,從而實現偽靜態效果。
編寫.htaccess文件時,可以使用如下的偽靜態規則示例:
<IfMole mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfMole>
以上規則將所有非文件和非目錄的請求路由到index.php文件處理。通過這種方式,可以為PHPWind網站創建一個更加用戶友好的URL結構。
需要注意的是,啟用Mod_rewrite模塊可能會對伺服器性能產生一定影響,尤其是在處理大量請求時。因此,在實際應用中,建議根據具體需求和伺服器負載情況,謹慎調整相關配置。
此外,還需要確保Apache伺服器正確配置了相應的PHP模塊,以支持PHPWind的運行。這通常涉及到在httpd.conf文件中載入php_mole,並在虛擬主機配置中指定正確的PHP處理方式。
⑵ Apache is running a threaded MPM,but your PHP Modle is not compiled to be t
PHP編譯模式錯了。如果在windows下,需在php.net上下載 PHP 5.2.13 zip package ,不要下debug pakage 或 Non-thread-safe zip package 。
若在linux下編譯,需去掉--with-openssl 參數。
⑶ 怎樣區別APACHE動態和靜態編譯
關於apache的動態與靜態編譯的理解,引用某人的比喻如下:
好比有兩個人a和m,a代表apache,m代表mole,要想讓a使用m的東西,一個方法是把m的東西都放到a那裡去,a使用的時候就是現成的了,就是所謂的靜態編譯
還有一個方法,就是告訴a,m的住址,當a要使用m的東西的時候,a去找m,然後使用,不過,這種方法要注意的一個問題就是:m必須要有實際的住址,否則a會找不到m而產生錯誤的,這種方法也就是apache 的動態(DSO)編譯了。
下面說說在apache1.3和apache2.0動態與靜態編譯編譯的區別
首先是apache1.3.29+php4.3.4+mysql4.0.13的靜態編譯
apache第一次編譯,並不要安裝,因為php的編譯需要apache至少已經編譯過一次
tar zvxf apache_1.3.27.tar.gz
cd apache_1.3.27
./configure --prefix=/usr/local/apache
編譯php
tar zvxf php4.3.4.tar.gz
cd php4.3.4
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.27
make
make install
第二次編譯安裝apache:
cd ../apache_1.3.29
./configure --prefi=/usr/local/apache --activate-mole=src/moles/php4/libphp4.a
make
make install
cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini
修改/usr/local/apache/conf/httpd.conf
查找<IfMole mod_mime.c>
在此范圍添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
注意:apache和php的源碼包在同一個目錄,--with-apache=../apache_1.3.27是指向源碼解壓的目錄
ok!靜態編譯完成。
再看DSO動態編譯方法:
首先編譯安裝apache
tar zvxf apache_1.3.29
cd apache_1.3.29
./configure --prefix=/usr/local/apache --enable-mole=so --enable-mole=rewrite --enable-shared=max
make
make install
so模塊用來提供DSO支持的apachehe核心模塊,rewrite是地址重寫的模塊,如果不需要可以不編譯enable-shared=max是指除了so以外的所有標准模塊都編譯成DSO模塊。
然後編譯php
tar zvxf php4.3.4.tar.gz
cd php4.3.2
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs
make
make install
然後修改httpd.conf,方法同靜態編譯的方法
OK,DSO動態編譯就完成了!
接下來我們講apache2.0.46+php4.3.2的動態編譯方法
一樣先編譯安裝apache
tar zvxf httpd-2.0.46.tar.gz
cd httpd-2.0.46
./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=most
make
make install
大家注意了--enable-so相當與1.3.27的--enable-mole=so,而--enable-mods-shared=most又等同與以前的--enable-shared=max
然後還是編譯PHP
tar zvxf php4.3.2.tar.gz
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs
make
make install
注意這里是apxs2!!
修改httpd.conf與1.3.27也有所不同,大家尋找Add Type application/x-tar .tgz 在下面添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
另外要顯示中文的話,請修改:
AddDefaultCharset gb2312
⑷ php5.6編譯生成libphp5.so的問題求助
由於好久沒有搭環境,在Linux上搭apache、PHP的環境時,遇到libphp5.so 無法生成這個問題,我也困擾了我半天,很是郁悶。從網上找了各種資料,都是瞎轉載,太無聊的一堆人了,自己成功沒有成功的先轉載,鄙視。 害的我嘗試了半天也沒有解決。下面列出我的正確解決辦法:
常見問題一:配置apache打開libphp5.so文件後提示錯誤
/usr/local/apache2/moles/libphp5.so: No such file or directory
解答: 發現moles下面沒有libphp5.so文件,說明安裝apache2的時候配置有問題,需要重新編譯安裝,必須採用 ./configure --enable-so 這種方式。然後重新安裝 make clean -> make -> make install。 然後重新安裝php,安裝時要求採用./configure --with-apxs2=/usr/local/apache2/bin/apxs 這種方式 然後 make & make install。如果還出現這個問題,可以重新安裝一下apache 和 php
常見問題二:在centOS中 配置apache的php時提示錯誤
cannot restore segment prot after reloc: Permission denied
解答:可以網路查看資料,關於centOS中的selinux。SELINUX的問題,對LIB庫的保護。
關閉 SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq!#保存退出
shutdown -r now#重啟系統