- 相關(guān)推薦
解決PHP的failed opening required問題的方法
人要想學(xué)習(xí)一點(diǎn)東西,就應(yīng)該先學(xué)會謙遜。以下是小編為大家搜索整理的解決PHP的failed opening required問題的方法,希望對大家有所幫助!更多精彩內(nèi)容請及時(shí)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
環(huán)境:WIN2003+IIS6+PHP5
本機(jī),2003下IIS6,配置php5,mysql ,phpMyAdmin。
現(xiàn)在php及mysql都可以正常運(yùn)行,架phpwind論壇也能正常運(yùn)行。
配置好ecshop的幾個(gè)參數(shù)后(就是那幾個(gè)用戶名,密碼什么的),在瀏覽器中運(yùn)行ecshop,
返回如下提示:
Warning: require(../includes/init.php) [function.require]: failed to open stream: No such file or directory in C:AppServwwwindex.php on line 22
Fatal error: require() [function.require]: Failed opening required '../includes/init.php' (include_path='.;C:php5pear') in C:AppServwwwindex.php on line 22
原來原因是這樣的:PHP程序到服務(wù)器,只能在目錄中運(yùn)行,無法在網(wǎng)站根目錄運(yùn)行,還是目錄權(quán)限的問題。 / www.phpky.cn
解決方法如下
看下,D盤權(quán)限為administrator,下面有一目錄為網(wǎng)站目錄Web,權(quán)限為administrator,然后Web目錄下面是各個(gè)網(wǎng)站的目錄,比如說ecshop目錄,平時(shí)的建法是ecshop目錄權(quán)限為administrator,下面再建Data目錄和Web目錄,這兩個(gè)目錄的權(quán)限是權(quán)限為administrator+web_ecshop(IIS運(yùn)行帳號),這樣問題就來了,放根目錄的PHP程序就會出現(xiàn)各種各樣的問題,就是不能正常運(yùn)行,這應(yīng)該是目錄權(quán)限繼承的問題。
正確的權(quán)限設(shè)定是ecshop目錄權(quán)限為administrator+web_ecshop(IIS運(yùn)行帳號),下面的兩個(gè)目錄權(quán)限為繼承,也就是網(wǎng)站根目錄的上級目錄的權(quán)限要和網(wǎng)站根目錄權(quán)限一樣這才樣就沒問題了。
【相關(guān)閱讀】
解決PHP無法訪問遠(yuǎn)程MySQL的問題
問題是這樣的:有A,B,C三臺服務(wù)器,C為服務(wù)器,B可以用PHP成功連接上C機(jī)器的mysql,而A機(jī)器則不能連接!
可以說,肯定不是代碼有什么問題,服務(wù)器上的mysql設(shè)置也是沒什么問題的,因?yàn)锽機(jī)器都是可以的。
肯定是A機(jī)器的設(shè)置有問題!
在網(wǎng)上一頓搜,各種說mysql授權(quán)問題的,以及修改php.ini的,修改防火墻的,事實(shí)上都不是這些問題導(dǎo)致的。
最后想到了SELINUX的問題,對比了下AB兩臺機(jī)器,果然設(shè)置不一樣!估計(jì)就是它的問題,有戲!
進(jìn)行了如下設(shè)置:
root下,用vim打開文件文件/etc/selinux/config
修改SELINUX的值:
#SELINUX=enforcing
SELINUX=disabled
保存并退出。
重啟生效,如果不想重啟,命令行輸入
setenforce 0
回車,OK
簡述php各種應(yīng)用亂碼問題的解決方法
1) 使用 標(biāo)簽設(shè)置頁面編碼
這個(gè)標(biāo)簽的作用是聲明客戶端的瀏覽器用什么字符集編碼顯示該頁面,xxx 可以為 GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是 UTF8)等等。因此,大部分頁面可以采用這種方式來告訴瀏覽器顯示這個(gè)頁面的時(shí)候采用什么編碼,這樣才不會造成編碼錯(cuò)誤而產(chǎn)生亂碼。但是有的時(shí)候我們會發(fā)現(xiàn)有了這句還是不行,不管 xxx 是哪一種,瀏覽器采用的始終都是一種編碼,這個(gè)情況我后面會談到。
請注意, 是屬于 HTML 信息的,僅僅是一個(gè)聲明,僅表明服務(wù)器已經(jīng)把 HTML 信息傳到了瀏覽器。
2) header("content-type:text/html; charset=xxx");
這個(gè)函數(shù) header() 的作用是把括號里面的信息發(fā)到 http 標(biāo)頭。如果括號里面的內(nèi)容為文中所說那樣,那作用和 標(biāo)簽基本相同,大家對照第一個(gè)看發(fā)現(xiàn)字符都差不多的。但是不同的是如果有這段函數(shù),瀏覽器就會永遠(yuǎn)采用你所要求的 xxx 編碼,絕對不會不聽話,因此這個(gè)函數(shù)是很有用的。為什么會這樣呢?那就得說說 http 標(biāo)頭和 HTML信息的差別了:
http 標(biāo)頭是服務(wù)器以 http 協(xié)議傳送 HTML 信息到瀏覽器前所送出的字串。而 標(biāo)簽是屬于 HTML 信息的,所以 header() 發(fā)送的內(nèi)容先到達(dá)瀏覽器,通俗點(diǎn)就是 header() 的優(yōu)先級高于 (不知道可不可以這樣講)。假如一個(gè) php 頁面既有header("content-type:text/html;charset=xxx"),又有,瀏覽器就只認(rèn)前者 http 標(biāo)頭而不認(rèn) meta 了。當(dāng)然這個(gè)函數(shù)只能在 php 頁面內(nèi)使用。
同樣也留有一個(gè)問題,為什么前者就絕對起作用,而后者有時(shí)候就不行呢?這就是接下來要談的Apache 的原因了。
3) AddDefaultCharset
Apache 根目錄的 conf 文件夾里,有整個(gè) Apache 的配置文檔 httpd.conf。
用文本編輯器打開 httpd.conf,第 708 行(不同版本可能不同)有 AddDefaultCharset xxx,xxx為編碼名稱。這行代碼的意思:設(shè)置整個(gè)服務(wù)器內(nèi)的網(wǎng)頁文件 http 標(biāo)頭里的字符集為你默認(rèn)的 xxx字符集。有這行,就相當(dāng)于給每個(gè)文件都加了一行 header("content-type:text/html; charset=xxx")。這下就明白為什么明明 設(shè)置了是 utf-8,可瀏覽器始終采用 gb2312 的原因。
如果網(wǎng)頁里有 header("content-type:text/html; charset=xxx"),就把默認(rèn)的字符集改為你設(shè)置的字符集,所以這個(gè)函數(shù)永遠(yuǎn)有用。如果把 AddDefaultCharset xxx 前面加個(gè)"#",注釋掉這句,而且頁面里不含 header("content-type…"),那這個(gè)時(shí)候就輪到 meta 標(biāo)簽起作用了。
下面列出以上的優(yōu)先順序:
.. header("content-type:text/html; charset=xxx")
.. AddDefaultCharset xxx
如果你是 web 程序員,建議給你的每個(gè)頁面都加個(gè)header("content-type:text/html;charset=xxx"),這樣就可以保證它在任何服務(wù)器都能正確顯示,可移植性也比較強(qiáng)。
4) php.ini 中的 default_charset 配置:
php.ini 中的 default_charset = "gb2312" 定義了 php 的默認(rèn)語言字符集。一般推薦注釋掉此行,讓瀏覽器根據(jù)網(wǎng)頁頭中的 charset 來自動選擇語言而非做一個(gè)強(qiáng)制性的規(guī)定,這樣就可以在同臺服務(wù)器上提供多種語言的網(wǎng)頁服務(wù)。
PHP截取漢字亂碼問題解決方法mb_substr函數(shù)的應(yīng)用。
【解決PHP的failed opening required問題的方法】相關(guān)文章:
php關(guān)閉warning問題的解決方法10-11
解決php fsockopen的方法07-14
解決PHP中文亂碼問題05-27
PHP解決session死鎖的解決方法09-17
PHP查詢大量數(shù)據(jù)內(nèi)存耗盡問題的解決方法07-24
php錯(cuò)誤提示failed to open stream10-07
完美解決PHP中文亂碼問題07-18