這個時候,使用如下命令
strace -o php.log -s 65535 php -i
然後在輸出結果文件php.log中搜索ini
可能的輸出結果是:
open("/usr/bin/php-cli.ini", O_RDONLY)=-1 ENOENT (No such file or directory)
open("/etc/php-cli.ini", O_RDONLY)=-1 ENOENT (No such file or directory)
open("/usr/bin/php.ini", O_RDONLY)=-1 ENOENT (No such file or directory)
open("/etc/php.ini", O_RDONLY)
如上,最終定位到 /etc/php.ini
strace這個命令在跟蹤程序執行的時候特別有用,這個命令值得深入研究。
Ⅱ 怎麼修改 cli php.ini指定路徑
1、帶上全路徑執行 #!/usr/local/php5/bin/php -q
2、 ln -s /usr/local/php5/bin/php /usr/bin/php
簡單明了,就用上面說的這個兩個就行了,
Ⅲ 寶塔安裝php redis 擴展故障
這是因為 php.ini 文件中,已經配置好了 redis 擴展,但是 php-cli 文件沒有添加成功配置的原因
web php 文件
php-cli php 文件
我想,產生這種問題的原因,可能是搭喚因為 web 的配置文件和 cli 的配置文襲絕件不是同一個文件的原因。但不知拍枝姿掉為什麼其他擴展正常,redis 不正常
Ⅳ 在dos的cmd模式下執行php 已載入的模塊都不能使用
這個是因為php的php.ini沒有被正確讀取到,所產生的模塊沒有載入的問題,意思是,你的cli模式的php載入是的是一個php.ini,而你的伺服器載入的是另外一個php.ini。或者是你機器上的php的cli版本和伺服器使用的php的版本不一致等情況,都有可能導致這種情況。
解決方法如下:
1. 同樓上,使用dl來載入模塊,不過這種方法某些平台不支持,且效果和同伺服器上使用php.ini載入的模塊使用起來效果或許會不一致。
2. 在命令行執行php時,使用php --ini命令先行查看php載入的配置文件的地址與伺服器上用phpinfo函數查看到的php載入的php.ini文件是否一致。(LZ的這個錯誤多半是這種情況,後續方法是基於這個檢查出文件不一致的)
3. 在命令行執行php時,使用php -c "php.ini文件所在文件夾地址"來運行php文件。
4. 把伺服器那個的php.ini拷貝到C:\Windows\目錄下。
5. 在命令行里用命令執行set PHPRC="php.ini文件所在文件夾地址"來設置php.ini文件所在文件夾的默認地址
3.4.5的方法效果相同
有關php.ini配置文件的載入的其他問題,請LZ參考這篇博客文章
http://blog.csdn.net/lihuhu/archive/2007/06/04/1638026.aspx
對於LZ提出的新的問題,我有以下疑問和解決方法:
1. 很有可能你的機器上安裝了多個php版本,使用瀏覽器訪問的時候用的php是5.2的,而在命令行里使用的php版本是php 5.3的,這樣就不難解釋提示配置文件部分設置已失效;
2. 你的wamp中,apache的配置httpd.conf裡面通過PHPIniDir設置了PHP模塊的php.ini文件的地址,導致實際上兩種方式載入的還是不同的文件,即使你把php.ini放到了C:\windows\下;
對於這兩種可能情況,最好的解決方法是:
在命令行下php -v查看當前命令行下php版本,寫一個php腳本,調用phpinfo函數,查看下瀏覽器下訪問時php的詳細環境信息,包括php版本,php的ini地址,php載入的模塊等。
如果檢查到命令行下是php5.3,而瀏覽器用的是php5.2,問題可以通過修改PATH環境變數,把PHP5.2的文件夾加到PATH裡面,去掉PHP5.3的。
如果檢查到PHP的ini文件載入錯誤,瀏覽器載入的是apache 配置中 通過 PHPIniDir 配置的ini文件話,把這個ini覆蓋C:\Windows\下的即可。
Ⅳ cli/php.ini和fpm/php.ini的區別
如果你在linux環境下編譯安裝過php,你可能會發現在php的安裝目錄中瞎歷有兩個php.ini文件。你或許知道php.ini是php解釋器的配置豎神猛文件,但你是否知道這兩個php.ini的區別是什麼呢?
PHP在命令行中直接運行php文件時所使用的php.ini配置文件。可以通過在命令行運行php --ini來查看。
當PHP運行做為FPM時,會使用fpm/phh.ini。余橋可以通過webserver執行一個有phpinfo()函數的php腳本來查看。
兩個配置文件在不同的使用場景下分別被使用,更加靈活。
Ⅵ cli/php.ini和fpm/php.ini的區別
1. 當從命令行執行PHP binary時,cli/php.ini會被使用,你可以通過在命令行運行php --ini來查看。
2. 當PHP運行做為FPM時,會使用fpm/phh.ini,其中一種情況就是伴隨著nginx的服務,你可以通過在webserver中php頁面添加phpinfo()方法來認證。
3. 這兩老並種php.ini會頻繁使用,分開最主皮逗要的優點是:在不同的情況下,會有不同的燃含賣配置文件,
例如:由webserver使用的php.ini文件,會配置比較短的max_execution_time,而在命令行中的php.ini文件,會配置比較長的max_execution_time。如果你對php有興趣,可以和我一樣在後盾人自己看看視頻慢慢學習,這樣以後就明白了。@( oóωò)@
Ⅶ linux環境php.ini已開啟openssl但phpinfo里沒有
從你的情況看,既然phpinfo已經顯示可以支持openssl,那麼應該不是環境的問題了。感覺像是你cli和fpm配置不一致,很多人都犯過這種錯誤,配置好了fpm,但是用cli執行本地命令行腳本是出現各種異常。一鏈野般nginx+fpm這種環境,建議配置好fpm後,用測桐廳試通過棚輪喊的php.ini覆蓋cli的php.ini。
Ⅷ 為什麼是命令行輸出的php版本和瀏覽器輸出的不一致
因為php-cli載入的配置文件和網頁端(php-fpm)載入的不一致。你用find / -name php.ini找下,會有兩個php.ini出現。在php-cli下(php命令行)執行php -ini 會看到你當前使用的ini文件。在頁面搜索php.ini會發現你載入的是另一處的
Ⅸ PHP CLI模式下,修改了php.ini配置文件,欲使其生效,是否要重啟PHP,怎樣重啟謝謝
cli環境下不需要重啟啊,php-fpm這種cgi模式需要重啟php-fpm進程