phpetc
1、找到linux php配置文件具體的的方法首先是可以打開終端輸入find命令即可顯示出php配置文件的路徑:
㈡ 為什麼php 的etc目錄沒有mysql
php_mysql.dll php_mysqli.dll php_pdo_mysql.dll這三野拍差個是mysql相關的賀伏,PHP7及以上完全移除了頌皮mysql擴展,只有mysqli和pdo是針對mysql的了
㈢ php出現502是什麼問題
502 Bad Gateway是一種報錯提示,這一錯誤並不意味著上游伺服器已關閉(無響應網關/代理),而是上游伺服器和網關/代理不同意的協議交換數據。
第一種原因:目前lnmp一鍵安裝包比較多的問題就是502 Bad Gateway,大部分情況下原因是在安裝php前,腳本中某些lib包可能沒有安裝上,造成php沒有編譯安裝成功。解決辦法:可以嘗試根據lnmp一鍵安裝包中的腳本手動安裝一下,看看是什麼錯誤導致的。
第二種原因:在php.ini里,eaccelerator配置項一定要放在Zend Optimizer配置之前,否則也可能引起502 Bad Gateway
第三種原因:在安裝好使用過程中出現502問題,一般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。
第四種原因:php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time改為300。
第五種原因:磁碟空間不足,如mysql日誌佔用大量空間。
第六種原因:查看php-cgi進程是否在運行。
另外的解決辦法:
Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經執行,但陸衫凳是由於某種原因(一般是讀取資源的問題)沒有執行完畢而導致PHP-CGI進程終止,一般來說Nginx 502 Bad Gateway和php-fpm.conf的設置有關。
php-fpm.conf有兩個至關重要的參數,一個是max_children,另一個是request_terminate_timeout,但是這個值不是通用的,而是需要自己計算的。
在安裝好使用過程中出現502問題,一般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。
計算的方式如下:如果伺服器性能足夠好,且寬頻資源足夠充足,PHP腳本沒有系循環或BUG的話可以直接將request_terminate_timeout設置成0s。0s的含義是讓PHP-CGI一直執行下去而沒有時間限制。如果做不到這一點,也就 是說PHP-CGI可塌碧能出現某個BUG,或者寬頻不夠充足或者其他的原因導致PHP-CGI假死那麼就建議給request_terminate_timeout賦一個值,這個值可以根據伺服器的性能進行設定。一般來說性能越好可以設置越高,20分鍾-30分 鍾都可以。
而max_children這個值又是怎麼計算出來的呢?這個值原則上是越大越好,php-cgi的進程多了就會處理的很快,排隊的請求就會很少。 設置max_children也需要根據伺服器的性能進行設定,一般來說一台伺服器正常情況下每一個php-cgi所耗費的內存在20M左右。
按照官方的答案,排查了相關的可能,並結合了網友的答案,得出了下面的解決辦法:
1、查看php fastcgi的進程數(max_children值)代碼:netstat -anpo | grep 「php-cgi」 | wc -l
5(假如早旅顯示5)
2、查看當前進程,代碼:top觀察fastcgi進程數,假如使用的進程數等於或高於5個,說明需要增加(根據機器實際狀況而定)
3、調整/usr/local/php/etc/php-fpm.conf的相關設置
<value name=」max_children」>10</value>
<value name=」request_terminate_timeout」>60s</value>
max_children最多10個進程,按照每個進程20MB內存,最多200MB。
request_terminate_timeout執行的時間為60秒,也就是1分鍾。
㈣ linux系統中php為什麼在/etc下面創建php.ini的軟連接,nginx配置文件也沒有調用/etc啊
nginx裡面調用的是php的埠信息。
㈤ php中etc文件php.ini在哪
Php.ini文件是php的一個配置文件,在windows主機中如果你未修改配置文件php.ini文件肯定是和你的php安裝目錄在一起的,但在linux中好像不一樣,下面我來介紹查找php.ini位置的方法。在linux下
最有可能的位置是:/etc目錄下或/usr/local/lib目錄下。
如果你還是找不到位置,那麼請使用終極解決辦法:
新建php文件,寫入如下代碼保存,然後在瀏覽器訪問該頁面,搜索php.ini,恭喜你,你要找的php.ini文件位置已經找到了。(用該方法找Php.ini文件位置,在linux和windows下都是絕招哦)
在linux伺服器上用命令行/data/php/bin/php a.php | grep php.ini
顯示
view sourceprint?
1.Configuration File (php.ini) Path => /data/php/etc
2.Loaded Configuration File => /data/php/bin/php.ini
/data/php/bin/php.ini的許可權linux伺服器上用的是 nginx+php
-rwxrwxrwx. 1 root root 69737 2月 3 13:49 /data/php/bin/php.ini
要怎麼處理才能在瀏覽器里瀏覽a.php 顯示Loaded Configuration File => /data/php/bin/php.ini
php命令行方式運行和在瀏覽器瀏覽php文件的主要區別是什麼
Php.ini位置修改方法如下:
php.ini文件預設放在/usr/local/lib上面,可以在編譯的時候使用--with-config-file-path參數來修改php.ini的存放位置,例如你可以使用--with- config-file-path=/etc把它存放到/etc下面,然後可以從源碼包中拷貝php.ini-dist到/etc/php.ini。
windows
在php安裝文件夾里。
一共有兩個類似php.ini-xxxxxxxx。你選擇一個你把「-xxxxxxxxx」刪除就是用這個。
Phpini文件位置
㈥ 如何運行PHP
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
我們要在電腦上運運ASP文件 只要裝IIS就可以。
哪要運行PHP文件呢。該怎麼辦!~
解析:
如何安裝運行php
1. Unix/Windows: 我的php.ini 文件應該放在哪?
UNIX下默認它應該放在 /usr/local/lib 目錄下。 這是它的 /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-mping錯誤。 查找你的伺服器錯誤日誌文件,看看是否屬於這種情況。 然後報告這個錯誤。如果你知道怎樣使用 gdb ,你可以提供一個 backtrace 在你的錯誤報告里。這將會對開發人員解決 這個問題有很大幫助。如果你是在將PHP作為Apache模塊使用,那麼請按下面的步驟做:
停止 d 進程
gdb d
停止 d 進程
> run -X -f /path/to/d.conf
瀏覽你剛才出錯的 URL
> run -X -f /path/to/d.conf
如果你還有 core mp, gdb 現在會通知你
打入: bt
在你的 bug report里應該包含backtrace 。 這些會被發往 bugs.php/
如果你的腳本使用了正則表達式函數 (ereg() and friends), 你應該確保你編譯 PHP 和 Apache 用的是同一個正則表達式包。 在 PHP 和 Apache 1.3.x 這個過程是自動進行的。
3. Unix: 我使用 RPMS 安裝 PHP , 但Apache 不支持 PHP頁面! 怎麼辦?
假設你安裝了 Apache 和 PHP(從 RPM ) , 你需要反注釋或者增加一些行在你的 .conf 文件里: # Extra MolesAddMole mod_php.cAddMole mod_php3.cAddMole mod_perl.c# Extra MolesLoadMole php_mole moles/mod_php.soLoadMole php3_mole moles/libphp3.so /* for PHP 3 */LoadMole php4_mole moles/libphp4.so /* for PHP 4 */LoadMole perl_mole moles/libperl.so
And add: AddType application/x-d-php3 .php3 /* for PHP 3 */AddType application/x-d-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 -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/ *** in/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 rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
重啟 Apache,你已經得到了rpm下的Mysq
l的支持。 注意到這種做法比你重新得到一個 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/d Undefined symbols: _press _unpress
這個問題其實與 PHP 無關, 而與 MySQL 客戶端庫有關。 --with-zlib,有些操作系統需要,而有些不需要。MySQL FAQ已經講述了這個問題。
9. Windows: 我安裝了PHP,但在瀏覽器里看我的PHP頁面, 得到如下錯誤: cgi error: The specified CGI application mi *** ehaved by not returning a plete 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文件,它樣都必須能被匿名 inter 用戶 ISUR_ 訪問。
腳本文件根本不存在(或者不是你認為的位置。)請注意在IIS里,你能夠阻塞這個錯誤,做法是在設置腳本映射目錄時, 選上 check file exists 框。這樣如果腳本不存在,伺服器會返回一個404錯誤。 這樣做也有其它的一些好處, 就是IIS僅為你做經過授權的操作。
10. Windows: 我嚴格按照install的要求做,可是還是不能讓我的php在IIS下工作。
確定任何想要運行PHP的用戶有操作php.exe的許可權! IIS 使用匿名的inter用戶,它是在IIS安裝時系統自動增加的。 這個用戶需要操作 php.exe的許可權. 還有,任何需要授權的用戶也必須有訪問 php.exe的許可權。 在 IIS4下,你要告訴它PHP是一個腳本引擎。
㈦ php市區設置中為什麼Etc/GMT-8實際表示的是GMT+8-CSDN論壇
php的開發者,創搭禪建了這個etc/GMT-8用來代替時區的東八區,編程語言有很多都是限定做枝團純橘死的,你如果想調用就必須按照它給你的方法來書寫
㈧ PHP進程管理三種模式
ondemand:按請示創建進程數;
dynamic:初始化啟動number進程數;
static:固定啟動進程數;
php-fpm進程管理一共有三種模式: ondemand、static、dynamic ,我們可以在同一個fpm的master配置三種模式,看下圖1。php-fpm的工作模式和nginx類似,都是一個master,多個worker模型。每個worker都在accept本pool內的監聽套接字(linux已不存在驚群現象)。
ondemand
在php-fpm啟動的時候,不會給這個pool啟動任何一個worker,是按需啟動,當有連接過來才會啟動。
配置文件(我的配置文件地址為:/usr/local/php/etc/php-fpm.conf)
當前pool的名字為test
原理
ondemand原理圖
1. 從上圖可以看出,新建worker的觸發條件是連接的到來,而不是實際的請求(例如,只進行連接比如telnet,不發請求數據也會新建worker)
2. worker的數量受限於pm.max_children配置,同時受限全局配置process.max(准確的說,三種模式都受限於全局配置)
3.1秒定時器作用
找到空閑worker,如果空閑時間超過pm.process_idle_timeout大小,關閉。這個機制可能會關閉所有的worker。
配置項要求
1. pm.max_children> 0
2. pm.process_idle_timeout> 0,如果不設置,默認10s
優缺點
優點:按流量需求創建,不浪費系統資源(在硬體如此便宜的時代,這個優點略顯雞肋)
缺點:由於php-fpm是短連接的,所以每次請求都會先建立連接,建立連接的過程必然會觸發上圖的執行步驟,所以,在大流量的系統上master進程會變得繁忙,佔用系統cpu資源,不適合大流量環境的部署
dynamic
在php-fpm啟動時,會初始啟動一些worker,在運行過程中動態調整worker數量,worker的數量受限於pm.max_children配置,同時受限全局配置process.max
當前pool的名字為test
原理
dynamic原理圖
1. 1秒定時器作用
檢查空閑worker數量,按照一定策略動態調整worker數量,增加或減少。增加時,worker最大數量<=max_children· <=全局process.max;減少時,只有idle >pm.max_spare_servers時才會關閉一個空閑worker。
idle > pm.max_spare_servers,關閉啟動時間最長的一個worker,結束本次處理
idle >= pm.max_children,列印WARNING日誌,結束本次處理
idle < pm.max_children,計算一個num值,然後啟動num個worker,結束本次處理
配置項要求
1. pm.min_spare_servers/pm.max_spare_servers有效范圍(0,pm.max_children]
2. pm.max_children> 0
3. pm.min_spare_servers<=pm.max_spare_servers
4. pm.start_servers有效范圍[pm.min_spare_servers,pm.max_spare_servers]如果沒有配置,默認pm.min_spare_servers + (pm.max_spare_servers - pm.min_spare_servers) / 2
優缺點
優點:動態擴容,不浪費系統資源,master進程設置的1秒定時器對系統的影響忽略不計;
缺點:如果所有worker都在工作,新的請求到來只能等待master在1秒定時器內再新建一個worker,這時可能最長等待1s;
static
php-fpm啟動採用固定大小數量的worker, 在運行期間也不會擴容,雖然也有1秒的定時器,僅限於統計一些狀態信息,例如空閑worker個數,活動worker個數,網路連接隊列長度等信息。
當前pool的名字為test
原理
配置項要求
1、pm.max_children> 0 必須配置,且只有這一個參數生效
優缺點
如果配置成static,只需要考慮max_children的數量,數量取決於cpu的個數和應用的響應時間,我司配置的是50。
我司不考慮動態的增加減少那麼十幾個或者幾十個worker,我們的內存沒有緊張到這個程度,所以,我們一步到位,把worker數配置到支持最大流量,(哈哈,50也是隨便定的,足矣足矣呢)
最後我們再介紹下worker的工作流程
fastcgi與php-fpm的關系一句話解讀:fastcgi只是通信應用協議,php-fpm就是實現了fastcig協議,並嵌入了一個 PHP 解釋器。
㈨ 為什麼php下沒有etc目錄
在命令行里,如果是用的fedora的系統的話就su root回車後輸入密碼,如果是ubuntu的話就sudo -i 然後輸入密碼,這時你就有管理員許可權了,然後cd /etc回車,這時直接vim 『name』鍵岩歲稿睜 就能新建一個叫name的文件並編輯他了~當然了,創建文件的方法有很多,主要是獲得管理員許可權,你參照棗緩我說的方法,應該就行了~
㈩ PHP如何讀寫/etc目錄下的文件
你的問題不在於php,而在於php所運行的許可權,比如你用apache來芹襲跑php,這個時候瞎首賀的許可權屬於apache用戶,可以到httpd.conf中修改,但是以root用戶來跑apache明顯比較危險。
較為好的方法可以磨派可以web端採用普通的apache用戶來跑,操作/etc/文件使用任務隊列的形式向後端發送消息來處理,當然這種方法比較有難度可以不考慮。