在 php 调用中默认使用 Lampp mysqldump

Use Lampp mysqldump as default in php call

棘手的问题,我不知道 SO 是否好 space(也许是 AskUbuntu?或 SuperUser?)

我在 /opt/lampp/

的 ubuntu 上设置了我的 Lampp

问题,当我需要调用 direct bin 作为 mysqldump 时,我最终调用了 ubuntu 上默认安装的一个,而不是链接到我的 lampp 的那个:

$ mysqldump --user=root test

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect

如您所见,它会检查 /var/run。 如果我想用好的,我应该指定路径:

$ /opt/lampp/bin/mysqldump --user=root test

-- MySQL dump 10.13 Distrib 5.6.21, for Linux (x86_64)

我可以在我的 PHP 调用中使用完整路径,但是我的 PHP prod 服务器将无法工作。

如何将 Lampp bin 设置为 php 和 exec('mysqldump') 使用的默认值?

你确实有多种选择来做你想做的事。

  • 您可以根据您的环境(本地、开发、预生产、生产...)创建一个配置文件。该文件可能声明一组配置,其中之一是您需要的可执行文件的路径。您的 php 代码将通过检查一个全局变量来了解环境,例如 $_SERVER,它可以在您的网络服务器的 vhost 文件中设置。我认为这是干净的做法。

  • 你可以为你的可执行文件硬编码一个路径(比如说/home/www/mysqldump)并创建一个符号link和ln -s(如果我没记错的话,或者检查手册页)在您环境的可执行文件 /opt/lampp/bin/mysqldump/home/www/mysqldump 之间。您必须以这种方式准备所有环境。我觉得有点丑但是很快

我相信还有很多其他解决方案。