1

我在 appfog 上设置了 wordpress 安装(使用 rackspace),并将安装克隆到我的本地机器进行开发。我知道安装工作(使用 MAMP),因为我创建了一个本地 mysql 数据库并将 wp-config.php 更改为指向它。但是,我想开发而不必每次提交时都更改 wp-config.php。在做了一些研究之后,似乎 Appfog 服务 Caldecott 让我可以使用af tunnel. 不幸的是,我在让它工作时遇到了问题。即使我将 MAMP mysql 端口更改为 8889 之类的东西,并通过端口 3306 隧道 mysql,它看起来已经连接,但在加载我的本地主机 Wordpress 时仍然出现“建立数据库连接时出错”。当我退出 mysql 监视器时(使用ctrl+x, ctrl+c),我收到一条消息,指出“错误:'mysql' 执行失败;它在你的 $PATH 中吗?”。最初,不,它不是,但我已经在本地机器上修复了 PATH 变量,这样当我转到终端并输入mysql,它会加载。

所以我想我的问题是两个部分:

1.)我是否在我的本地机器上采用正确的方法进行 Wordpress 开发



2.)如果是这样,为什么隧道不起作用?

4

3 回答 3

2

解决此问题的一种方法是使用本地数据库设置模拟VCAP_SERVICES本地系统上的环境变量。这将允许您使用相同的自定义 AppFog wp-config.php文件,该文件查看 VCAP_SERVICES 以获取其数据库凭据。

export VCAP_SERVICES='{"mysql-5.1": [{"credentials": {                      
    "hostname": "localhost",          
    "port": 3306,            
    "password": "root",            
    "name": "LOCAL_DATABASE_NAME",            
    "user": "root"}}]}'

编辑:设置此环境变量后,您需要在 MAMP 中重新启动 Apache 服务器。(感谢德克斯)

这将消除将开发代码指向生产数据库的需要。

于 2012-11-08T05:24:03.380 回答
1

只需测试 vcap_services 是否可用。如果是,请使用一个配置。如果它们不是,请使用不同的配置。

这是我的本地+ appfog开发网站配置文件的示例。

if(getenv("VCAP_SERVICES")){
    //if in webserver
    $services_json = json_decode(getenv("VCAP_SERVICES"),true);
    $mysql_config = $services_json["mysql-5.1"][0]["credentials"];
    $username = $mysql_config["username"];
    $password = $mysql_config["password"];
    $hostname = $mysql_config["hostname"];
    $port = $mysql_config["port"];
    $db = $mysql_config["name"];

    define("DB_SERVER", "$hostname");
    define("DB_USER", "$username");//enter your database username
    define("DB_PASS", "$password");//databse password
    define("DB_NAME", "$db");//database name
} else {
     //if in local development
     define("DB_SERVER", "localhost");
     define("DB_USER", "website");//enter your database username
     define("DB_PASS", "dfgdfgdf");//databse password
     define("DB_NAME", "fgdf_web");//database name
}

此外,您可以使用与使用 .gitignore 相同的方式使用 .afignore 来忽略 af 更新功能中的某些文件。您可以使用适当的配置更新一次,然后添加 afignore,然后它将永远不会再次更新。

于 2013-02-19T16:02:47.580 回答
0

这是一个快速且非常肮脏的脚本,可根据 Tim Santeford 的回答自动执行该过程。请务必更改 LOCAL_DATABASE_NAME

#!/bin/bash

export VCAP_SERVICES='{"mysql-5.1": [{"credentials": {"hostname": "localhost", "port": 8889, "password": "root", "name": "LOCAL_DATABASE_NAME", "user": "root"}}]}'

/Applications/MAMP/Library/bin/httpd -k stop

sleep 3

/Applications/MAMP/Library/bin/httpd -k start
于 2012-11-24T23:03:07.223 回答