2011-05-27 94 views
5

我以前有這樣的地方在/tmp/mysql.sock尋找一個插槽我的C語言應用程序,但我的插座位置已經被設置爲/var/run/mysqld.sock問題。我現在將my.cnf中的設置更改爲始終將套接字放入/ tmp。PHP MySQL的設置插槽位置

現在,當我嘗試使用nginx和php5-fpm運行我的web應用程序時,它找不到套接字,因爲它仍然在/var/run/mysqld.sock中查找。起初,我創建了一個鏈接,但後來注意到,無論何時重新啓動機器,該鏈接都將被刪除。

我通過我的php.ini搜索並將所有三個(pdo_mysql.default_socket,mysql.default_socket,mysqli.default_socket)可用套接字選項設置爲/tmp/mysql.sock。我在文件夾cgi,cli和fpm中做了這個。但是,它仍然不起作用。我需要添加另一個選項嗎?或者我應該重新考慮一般的方法?

繼承人我的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中:

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 

以下是我目前通過PDO訪問數據庫中的PHP:

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

發表您的php.ini沒有評論。它必須與你的php.ini或你的代碼中處理你的數據庫連接的方式有關。 – 2011-05-27 12:36:54

+0

我編輯我的帖子,並使用php5/fpm/php.ini作爲基礎。我也不知道我是否必須一直編輯它們三個。真的沒有任何意義,是嗎? – 2011-05-27 13:51:43

回答

6

我不知道爲什麼你的默認配置不更新,但你可以在連接時設置了插座的位置,對於爲例:

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

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

非常感謝,+1好工作。如果我找不到爲什麼我的php.ini配置不起作用的原因,我會使用這種方法。 – 2011-05-27 13:52:39