2011-05-27 15 views
5

मुझे पहले समस्या थी कि मेरे सी अनुप्रयोग जहां/smp/mysql.sock में सॉकेट की तलाश में है लेकिन मेरा सॉकेट स्थान /var/run/mysqld.sock पर सेट किया गया था। सॉकेट को हमेशा/tmp में रखने के लिए अब मैंने my.cnf में सेटिंग्स को बदल दिया है।PHP सेट MySQL सॉकेट स्थान

अब, जब मैं nginx और php5-fpm का उपयोग करके अपना वेब एप्लिकेशन चलाने की कोशिश करता हूं तो उसे सॉकेट नहीं मिलता है क्योंकि यह अभी भी /var/run/mysqld.sock में दिखता है। सबसे पहले मैंने एक लिंक बनाया लेकिन फिर ध्यान दिया, कि जब भी मैं मशीन को पुनरारंभ करता हूं, तो यह लिंक हटा दिया जाता है।

मैं अपने php.ini के माध्यम से खोज की है और सभी तीन (pdo_mysql.default_socket, mysql.default_socket, mysqli.default_socket) उपलब्ध सॉकेट विकल्प /tmp/mysql.sock करने के लिए सेट। मैंने इसे सीजीआई, क्ली और एफपीएम फ़ोल्डर में किया था। हालांकि, यह अभी भी काम नहीं करता है। क्या मुझे एक और विकल्प जोड़ने की ज़रूरत है? या क्या मुझे सामान्य रूप से अपने दृष्टिकोण पर पुनर्विचार करना चाहिए?

यहाँ मेरा php.ini:

[PHP] 

    engine = On 
    short_open_tag = On 
    asp_tags = Off 
    precision = 14 
    y2k_compliance = On 
    output_buffering = 4096 
    zlib.output_compression = Off 
    implicit_flush = Off 
    unserialize_callback_func = 
    serialize_precision = 100 
    allow_call_time_pass_reference = Off 
    s afe_mode = Off 
    safe_mode_gid = Off 
    safe_mode_include_dir = 
    safe_mode_exec_dir = 
    safe_mode_allowed_env_vars = PHP_ 
    safe_mode_protected_env_vars = LD_LIBRARY_PATH 
    disable_functions = 
    disable_classes = 
    expose_php = On 
    max_execution_time = 30 
    max_input_time = 60 
    memory_limit = 128M 
    error_reporting = E_ALL & ~E_DEPRECATED 
    display_errors = Off 
    display_startup_errors = Off 
    log_errors = On 
    log_errors_max_len = 1024 
    ignore_repeated_errors = Off 
    ignore_repeated_source = Off 
    report_memleaks = On 
    track_errors = Off 
    html_errors = Off 
    variables_order = "GPCS" 
    request_order = "GP" 
    register_globals = Off 
    register_long_arrays = Off 
    register_argc_argv = Off 
    auto_globals_jit = On 
    post_max_size = 8M 
    magic_quotes_gpc = Off 
    magic_quotes_runtime = Off 
    magic_quotes_sybase = Off 
    auto_prepend_file = 
    auto_append_file = 
    default_mimetype = "text/html" 
    doc_root = 
    user_dir = 
    enable_dl = Off 
    file_uploads = On 
    upload_max_filesize = 2M 
    max_file_uploads = 20 
    allow_url_fopen = On 
    allow_url_include = Off 
    default_socket_timeout = 60 

    [Date] 
    [filter] 
    [iconv] 
    [intl] 
    [sqlite] 
    [sqlite3] 
    [Pcre] 
    [Pdo] 
    [Pdo_mysql] 
    pdo_mysql.cache_size = 2000 
    pdo_mysql.default_socket=/tmp/mysql.sock 
    [Phar] 
    [Syslog] 
    define_syslog_variables = Off 
    [mail function] 
    SMTP = localhost 
     smtp_port = 25 
    mail.add_x_header = On 
    [SQL] 
    sql.safe_mode = Off 
    [ODBC] 
    odbc.allow_persistent = On 
    odbc.check_persistent = On 
    odbc.max_persistent = -1 
    odbc.max_links = -1 
    odbc.defaultlrl = 4096 
    odbc.defaultbinmode = 1 
    [Interbase] 
    ibase.allow_persistent = 1 
    ibase.max_persistent = -1 
    ibase.max_links = -1 
    ibase.timestampformat = "%Y-%m-%d %H:%M:%S" 
    ibase.dateformat = "%Y-%m-%d" 
    ibase.timeformat = "%H:%M:%S" 
    [MySQL] 
    mysql.allow_local_infile = On 
    mysql.allow_persistent = On 
    mysql.cache_size = 2000 
    mysql.max_persistent = -1 
    mysql.max_links = -1 
    mysql.default_port = 
    mysql.default_socket=/tmp/mysql.sock 
    mysql.default_host= 
    mysql.default_user = 
    mysql.default_password = 
    mysql.connect_timeout = 60 
    mysql.trace_mode = Off 
    [MySQLi] 
    mysqli.max_persistent = -1 
    mysqli.allow_persistent = On 
    mysqli.max_links = -1 
    mysqli.cache_size = 2000 
    mysqli.default_port = 3306 
    mysqli.default_socket =/tmp/mysql.sock 
    mysqli.default_host = 
    mysqli.default_user = 
    mysqli.default_pw = 
    mysqli.reconnect = Off 
    [mysqlnd] 
    mysqlnd.collect_statistics = On 
    mysqlnd.collect_memory_statistics = Off 
    [OCI8] 
    [PostgresSQL] 
    pgsql.allow_persistent = On 
    pgsql.auto_reset_persistent = Off 
    pgsql.max_persistent = -1 
    pgsql.max_links = -1 
    pgsql.ignore_notice = 0 
    pgsql.log_notice = 0 
    [Sybase-CT] 
    sybct.allow_persistent = On 
    sybct.max_persistent = -1 
    sybct.max_links = -1 
    sybct.min_server_severity = 10 
    sybct.min_client_severity = 10 
    [bcmath] 
    bcmath.scale = 0 
    [browscap] 
    [Session] 
    session.save_handler = files 
    session.use_cookies = 1 
    session.use_only_cookies = 1 
    session.name = PHPSESSID 
    session.auto_start = 0 
    session.cookie_lifetime = 0 
    session.cookie_path =/
    session.cookie_domain = 
    session.cookie_httponly = 
    session.serialize_handler = php 
    session.gc_probability = 1 
    session.gc_divisor = 1000 
    session.gc_maxlifetime = 1440 
    session.bug_compat_42 = Off 
    session.bug_compat_warn = Off 
    session.referer_check = 
    session.entropy_length = 0 
    session.cache_limiter = nocache 
    session.cache_expire = 180 
    session.use_trans_sid = 0 
    session.hash_function = 0 
    session.hash_bits_per_character = 5 
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" 
    [MSSQL] 
    mssql.allow_persistent = On 
    mssql.max_persistent = -1 
    mssql.max_links = -1 
    mssql.min_error_severity = 10 
    mssql.min_message_severity = 10 
    mssql.compatability_mode = Off 
    mssql.secure_connection = Off 
    [Assertion] 
    [COM] 
    [mbstring] 
    [gd] 
    [exif] 
    [Tidy] 
    tidy.clean_output = Off 
    [soap] 
    soap.wsdl_cache_enabled=1 
    soap.wsdl_cache_dir="/tmp" 
    soap.wsdl_cache_ttl=86400 
    soap.wsdl_cache_limit = 5 
    [sysvshm] 
    [ldap] 
    ldap.max_links = -1 
    [mcrypt] 

[dba] 

इसके अलावा, यहाँ है nginx error.log:

$db = new PDO('mysql:host=localhost;dbname=mydb', $dbUser, $dbPass); 
:

PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' in /var/www/php_includes/sfunctions.php:250 

यहाँ कैसे मैं वर्तमान में PHP में पीडीओ के माध्यम से डाटाबेस का उपयोग है

+0

टिप्पणियों के बिना अपने php.ini पोस्ट करें। इसमें आपके php.ini के साथ कुछ करना होगा या जिस तरह से आप अपने कोड में अपना डेटाबेस कनेक्शन संभालेंगे। –

+0

मैंने अपनी पोस्ट संपादित की और php5/fpm/php.ini को आधार के रूप में उपयोग किया। मुझे यह भी पता नहीं है कि मुझे हर तीनों को हर समय संपादित करना है या नहीं। वास्तव में कोई मतलब नहीं होगा, है ना? –

उत्तर

6

मुझे नहीं पता कि आपकी डिफ़ॉल्ट कॉन्फ़िगरेशन क्यों अपडेट नहीं होती है, लेकिन आप कनेक्शन समय पर सॉकेट स्थान सेट कर सकते हैं, उदाहरण के लिए:

DSN for PDO: 
mysql:unix_socket=/tmp/mysql.sock;dbname=... 

mysql_connect: 
$db = mysql_connect('localhost:/tmp/mysql.sock', ... 
+0

धन्यवाद, +1 अच्छा काम आसपास है। अगर मुझे कारण नहीं मिल रहा है कि मेरा php.ini कॉन्फ़िगर क्यों काम नहीं करता है, तो मैं इस विधि के साथ जाऊंगा। –