本文目錄一覽:
- 1、FastCGI如何自定義php.ini文件
- 2、mac 怎麼配置php.ini 連接mysql
- 3、DZ7.2提示需要php.ini中allow_url_fopen 選項開啟,聽說可以跳過無事,不知如何操作?
FastCGI如何自定義php.ini文件
現在的虛擬主機提供的功能很強大,很多主機商都允許客服自定義php.ini。如何自定義php.ini呢,分以下幾種情況:
模塊方式,需要寫入.htaccess文件
suPHP方式,這個直接在用戶的根目錄放一個php.ini文件就可以了,最簡單,也是目前虛擬主機服務商使用最廣泛的方式。
今天就來說下FastCGI方式下如何自定義php.ini. 以cPanel主機為例來進行說名,如果是其他的只需要知道對應的目錄修改下即可。操作如下:
在 public_html 目錄的 .htaccess 文件加入:
AddHandler php-fastcgi .php
Action php-fastcgi /cgi-bin/php.fcgi
建立一個文件 php.fcgi ,內容:
#!/bin/sh
exec /usr/local/cpanel/cgi-sys/php5
上傳到 cgi-bin目錄,許可權設置為 700 ,必須通過 ASCII碼上傳
新建一個php.ini 文件放在 cgi-bin目錄下,在文件中寫入需要自定義的內容即可。
如果想自定義php.ini的路徑,就把php.fcgi中的內容修改為:
#!/bin/sh
PHPRC=」/home/doczz/public_html」
export PHPRC
exec /usr/local/cpanel/cgi-sys/php5
然後把php.ini文件放在定義的目錄下即可。
需要注意的問題:
1.php.fcgi的許可權設置為755(如果啟用了suEXEc,設置為700即可。)
2.這個文件必須通過ASCII 碼上傳,不能通過二進位編碼上傳。
mac 怎麼配置php.ini 連接mysql
當嘗試在console下運行php腳本時卻提示pdo連接mysql.sock時出錯
PHP Error[2]: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)
但是查過了MAMP自帶的php5.2和php5.3的php.ini發現裡面的幾處默認mysql連接文件default_socket設置都沒有問題,於是google之。發現原來命令行的php是用了MAC OS自帶的php,需要修改MAC OS自帶的php.ini。 具體步驟如下:
如果你已經有/private/etc/php.ini就不需要再拷貝一份php.ini.default出來了。
cd /private/etc/
sudo cp php.ini.default php.ini
sudo vi php.ini
把php.ini裡面所有的default_socket都改成MAMP的mysql.sock的正確位置即可。
pdo_mysql.default_socket=/Applications/MAMP/tmp/mysql/mysql.sock
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
mysqli.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
DZ7.2提示需要php.ini中allow_url_fopen 選項開啟,聽說可以跳過無事,不知如何操作?
本帖就介紹下關於打開DreamHost——allow_url_fopen 配置。
DreamHost 默認不打開文件系統和流配置選項 allow_url_fopen ,而是建議使用一個替代的函數模塊 cURL。下面以一個例子說明用 cURL 遠程讀取的方法:
第一,allow_url_fopen = On 的情況下:
?php
$str = file_get_contents(“”);
if ($str !== false) {
// do something with the content
echo $str;
}
?
第二,allow_url_fopen = Off 的情況下:
?php
$ch = curl_init(“”);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$str = curl_exec($ch);
if ($str !== false) {
// do something with the content
echo $str;
}
curl_close($ch);
?
但是很多現成的 PHP 採集器是使用依賴於 allow_url_fopen 選項的函數,當初遇到這個問題時,我搜索了一下,大概有2個解決辦法,但是都不方便。一個是編譯自己的 PHP,該方法是一切從頭開始,怎麼定義 PHP 都隨你,可是費時費力費空間,當初,我還真的嘗試了一下,像 Zend Optimizer 等等,也要自己安裝,如果,只是為了使用這一個函數,根本沒必要這麼折騰;另一個方法是上傳什麼 php-update.sh 腳本文件,也是比較麻煩的。
後來發現,其實只要定製 php.ini 文件,並讓系統知道本網站使用定製的 php.ini 即可,先來說說標準的方法,這需要對 lunix 有一點了解,之後再給出一個更容易的方法,標準的方法如下:
1)用 ssh 方式登錄到你的網站,找到以你的網站名命名的目錄,例如 hosteguide.com,在它下面用 mkdir 命令創建一個子目錄 cgi-bin;
2)把默認的 php.cgi 和 php.ini 文件放到 cgi-bin 目錄下,可以從 DreamHost 的系統目錄中拷貝,以我的網站為例:
cp /dh/cgi-system/php5.cgi hosteguide.com/cgi-bin/php.cgi
cp /etc/php5/cgi/php.ini hosteguide.com/cgi-bin/php.ini
現在的網站是 php5 的,我也是建議使用這個版本。如果,你使用的是 php4,則要從 /dh/cgi-system/php.cgi 和 /etc/php/cgi/php.ini 分別獲取 DreamHost 的默認 php.cig 和 php.ini 文件;
3)編輯 php.ini 文件,把 allow_url_fopen = Off 改為 allow_url_fopen = On 並保存;
4)在域名同名的目錄下創建(如果已經存在就修改).htaccess 文件,例如 hosteguide.com/.htaccess 文件,在文件中添加
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi
5)修改文件的訪問許可權,例如:
chmod 644 hosteguide.com/.htaccess
chmod 755 hosteguide.com/cgi-bin
chmod 750 hosteguide.com/cgi-bin/php.cgi
chmod 644 hosteguide.com/cgi-bin/php.ini
現在你就可以正常使用依賴於 allow_url_fopen 選項的函數,或者 PHP 的採集器。
能看懂不?不看懂就說··
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/151128.html