मैं एक बहुत ही साधारण परीक्षण स्क्रिप्ट है:पीडीओ कनेक्शन कमांड लाइन से काम करता है, लेकिन अपाचे के माध्यम से नहीं?
<?php
$DSN = "mysql:host=db.example.edu;port=3306;dbname=search_data";
try {
$DB = new PDO($DSN, "username", "super-secret-password!");
} catch (PDOException $e) {
header('Content-Type: text/plain');
print "Could not connect to database, rawr. :-(";
exit;
}
$SQL = "SELECT phrase FROM search ORDER BY RAND() LIMIT 10";
foreach($DB->query($SQL) as $row){
print $row['phrase']."\n";
}
?>
जब मैं कमांड लाइन से इस स्क्रिप्ट को निष्पादित, यह पूरी तरह से काम करता है:
$ php test.php
corporal punishment
Stretches
voluntary agencies and the resettlement of refugees
music and learning
Nike Tiger Woods Scandal
Hermeneia
PSYCHINFO
anthony bourdain
Black-White Couples and their Social Worlds
colonization, hodge
लेकिन जब मैं अपने वेब ब्राउज़र के माध्यम ठीक उसी लिपि का उपयोग , यह कहते हैं:
Could not connect to database, rawr. :-(
मैं त्रुटि पर var_dump
की कोशिश की है, और संदेश है: "SQLSTATE [HY000] [2003] MySQL सर्वर के लिए 'पर कनेक्ट नहीं कर सकता db.example.edu '(13) "।
यह परेशान है। यह एक ही सर्वर पर सटीक वही स्क्रिप्ट है - जब मैं इसे कमांड लाइन से निष्पादित करता हूं तो यह क्यों काम करता है, लेकिन जब अपाचे इसे निष्पादित करता है तो विफल रहता है?
क्या यह एक लिनक्स सर्वर है? क्या यह Red Hat या CentOS SELinux चल रहा है? यदि हां, तो आप SELinux बूलियन्स सक्षम करने के लिए आवश्यकता हो सकती है 'httpd_can_network_connect' और' httpd_can_network_connect_db' अपाचे एक दूरस्थ डेटाबेस की मेजबानी के लिए कनेक्शन स्थापित करने के लिए अनुमति देने के लिए। इस त्रुटि (13 = अनुमति नहीं दी) के बारे में अधिक जानकारी के –
यहाँ है: http://www.filonov.com/blog/2009/08/07/sqlstatehy000-2003-cant-connect-to-mysql-server-on-xxx -xxx-xxx-xxx-13/ – thetaiko
@Michael हाँ, यह एक RHEL 6.1 सर्वर, और उस पर एक चमकदार नया एक है। इसके अलावा, @thetaiko - वह काम किया! यह SELinux कनेक्शन को अवरुद्ध कर रहा था, और रूट सेट के रूप में 'setsebool -P httpd_can_network_connect = 1' चला रहा था। यदि आप इसे उत्तर के रूप में पोस्ट करना चाहते हैं, तो मैं खुशी से स्वीकार करूँगा और ऊपर उठाऊंगा। –