Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp3应用程序子域共享相同的应用程序代码但不同的数据库_Php_Cakephp_Cakephp 3.0_Multi Tenant - Fatal编程技术网

Cakephp3应用程序子域共享相同的应用程序代码但不同的数据库

Cakephp3应用程序子域共享相同的应用程序代码但不同的数据库,php,cakephp,cakephp-3.0,multi-tenant,Php,Cakephp,Cakephp 3.0,Multi Tenant,我想用CakePHP 3构建多租户web应用程序,就像这样,它也是用CakePHP编写的 每个租户将有单独的子域和单独的数据库,只有应用程序源代码对于所有子域都是相同的。域将有自己的文件夹,如x.domain.com,y.domain.com映射到文件夹x,y,z 我不想在所有子域中都有重复的应用程序源代码。我希望对所有应用程序重复使用相同的应用程序代码 当请求中的每个子域时,如何使用相同的应用程序代码但不同的数据库?欢迎对任何类型的实现提出任何建议。您必须为此创建一个conf文件 您可以使用下

我想用CakePHP 3构建多租户web应用程序,就像这样,它也是用CakePHP编写的

每个租户将有单独的子域和单独的数据库,只有应用程序源代码对于所有子域都是相同的。域将有自己的文件夹,如
x.domain.com
y.domain.com
映射到文件夹
x,y,z

我不想在所有子域中都有重复的应用程序源代码。我希望对所有应用程序重复使用相同的应用程序代码


当请求中的每个子域时,如何使用相同的应用程序代码但不同的数据库?欢迎对任何类型的实现提出任何建议。

您必须为此创建一个conf文件

您可以使用下面的sh文件自动创建

#!/bin/bash

if [ "x${1}" = "x" ]; then
    echo "User is not specified"
    exit 1
fi

if [ "x${2}" = "x" ]; then
    echo "Domain is not specified"
    exit 1
fi

if [ "x${3}" = "x" ]; then
    echo "Domain is not specified"
    exit 1
fi

/bin/echo ${1}${2} | /bin/egrep -q ';|`|\||>'
if [ $? -eq 0 ]; then
    echo "Bad parameter"
    exit 1
fi

/bin/cat > /etc/httpd/vhost.d/${1}.${2}.conf <<EOF
<VirtualHost *:80>
DocumentRoot /home/user/www.${2}/htdocs
ServerName ${1}.${2}
ServerAlias ${3}
ServerAdmin adminemail@example.com
</VirtualHost>


<VirtualHost *:443>
DocumentRoot /home/user/www.${2}/htdocs
ServerName ${1}.${2}
ServerAlias ${3}
ServerAdmin adminemail@example.com
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/example.com.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/example.key
SSLCACertificateFile /etc/httpd/conf/ssl.crt/example.crt
</VirtualHost>


EOF

service httpd restart

echo "Vhost has been added"  

exit 0
$real\u domain\u name是服务器别名,如果您想将任何实际域作为该子域的别名。

本文可能会对您有所帮助
$subdomain_name = 'xyz';
$domain_name = 'domain.com';
$real_domain_name = 'xyz.domain.com';

exec ("/usr/local/bin/vhost_gen.sh ".$subdomain_name." ".
$domain_name." ".$real_domain_name);