Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Php 将根文件夹设置为本地主机上Apache中的子文件夹,该子文件夹也将在生产服务器上工作_Php_Apache_Server_Directory - Fatal编程技术网

Php 将根文件夹设置为本地主机上Apache中的子文件夹,该子文件夹也将在生产服务器上工作

Php 将根文件夹设置为本地主机上Apache中的子文件夹,该子文件夹也将在生产服务器上工作,php,apache,server,directory,Php,Apache,Server,Directory,我有一个项目,它的“public”和“private”文件夹结构位于主项目根文件夹内的同一级别(请参见附图) 我希望本地服务器(在本例中为MAMP)自动默认为“public”文件夹作为域根目录。最好用php还是Apache来实现这一点 此外,当我将网站上传到生产服务器时,域名将设置在“公共”文件夹中,因此我理想情况下需要一个解决方案,这意味着我上传网站时,情况仍然如此,即“项目/公共”文件夹 这对我来说都是新鲜事,所以我有点不知所措,不知道最好的方法是什么 基本上,您只需要创建一个虚拟主机配置文

我有一个项目,它的“public”和“private”文件夹结构位于主项目根文件夹内的同一级别(请参见附图)

我希望本地服务器(在本例中为MAMP)自动默认为“public”文件夹作为域根目录。最好用php还是Apache来实现这一点

此外,当我将网站上传到生产服务器时,域名将设置在“公共”文件夹中,因此我理想情况下需要一个解决方案,这意味着我上传网站时,情况仍然如此,即“项目/公共”文件夹

这对我来说都是新鲜事,所以我有点不知所措,不知道最好的方法是什么


基本上,您只需要创建一个虚拟主机配置文件,并在Apache配置文件中启用应用程序将在其上侦听请求的端口。我从未使用过MAMP,所以我给您举一个Linux机器上vhost配置的示例

  • 在/etc/httpd/conf.d中创建一个conf文件/

    vim/etc/httpd/conf.d/example.conf

  • 这个文件将告诉Apache服务器什么是文档根目录 特定端口。端口可以是除保留端口以外的任何可用端口 端口(0-1023)

    继续

    DocumentRoot "/var/www/example/public"
    <Directory "/var/www/example/public/">
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    
        # enable mod_rewrite
        RewriteEngine on
    
        # Handle Authorization Header
        RewriteCond %{HTTP:Authorization} .
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
        # Redirect Trailing Slashes If Not A Folder...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} (.+)/$
        RewriteRule ^ %1 [L,R=301]
    
        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </Directory>
    
    LogLevel Warn       
    
    ErrorLog  /var/log/httpd/example-error.log
    CustomLog /var/log/httpd/example-access.log combined
    
    DocumentRoot”/var/www/example/public
    选项-索引+FollowSymLinks+多视图
    不允许超限
    命令允许,拒绝
    通融
    #启用mod_重写
    重新启动发动机
    #句柄授权头
    RewriteCond%{HTTP:Authorization}。
    重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
    #如果不是文件夹,则重定向尾部斜杠。。。
    重写cond%{REQUEST_FILENAME}-D
    重写cond%{REQUEST_URI}(+)/$
    重写规则^1[L,R=301]
    #处理前控制器。。。
    重写cond%{REQUEST_FILENAME}-D
    重写cond%{REQUEST_FILENAME}-F
    重写规则^index.php[L]
    日志级别警告
    ErrorLog/var/log/httpd/example-error.log
    CustomLog/var/log/httpd/example-access.log组合
    
  • 在Apache conf文件中添加此端口号端口 (/etc/httpd/conf/httpd.conf)

    监听端口

  • 重新启动Apache服务器

  • 与XAMP和WAMP一样,MAMP也应该有一个GUI来配置Apache服务器。您可以找到保存这些vhost配置的位置/文件夹,并且可以通过任何文本编辑器直接修改该文件

    你也可以参考这些


    您通常会告诉服务器(Apache、Nginx、IIS等)站点的“根”在哪里,以及所有代码的起始位置。该代码可以使用
    include
    require
    在其他地方访问其他PHP代码,并且可以读取其他文件夹的文件系统(假设服务器权限正确)。通常都是这样做的,这样您就可以将文件从URL中直接访问的文件中分离出来,可以是PHP类(如Composter中的内容)、日志文件或自定义上载。我不知道public/private的具体情况,但是看到index.php文件有点奇怪outside@ChrisHaas我在公共和私有文件夹中也有index.php文件。我认为出于安全考虑,每个文件夹中都应该有一个index.php文件?因为我使用的是MAMP,我想我要找的是将公用文件夹设置为根目录的Apache代码,所以当我将站点上传到一个实时服务器时,它仍然可以像在本地主机上一样工作?在我看来,“在每个文件夹中放置index.php”是一种较旧的思维方式,通常与共享或托管主机相关。不是对的,也不是错的,但这是一种防止服务器配置错误的方法,对我来说,我只是确保我的服务器配置正确。(另外,我在Nginx上托管,在Nginx上,对服务器的配置拥有绝对控制权更为常见。)您能检查一下吗-