`Apache`` localhost / ~ tên người dùng / `không hoạt động


95

CẬP NHẬT : Câu trả lời sau đây cũng sẽ phù hợp với El Capitan.

Đối với những người mới bắt đầu, tệp được đề cập bên dưới nằm trong / etc / apache2

Đối với câu trả lời bên dưới, tệp cũng cần được thay đổi là /etc/apache2/extra/httpd-userdir.conf

NGUỒN GỐC :

Vì vậy, tôi vừa mới nâng cấp lên Mac OS X Yosemite và tôi cần thiết lập lại Apache của mình. Tôi tạo một thư mục "Sites" dưới / user / kevin và thay đổi quyền tệp thành 777 và bỏ ghi chú dòng php5module /etc/apache2/httpd.confgiống như trước đây.

localhost đang hoạt động nhưng localhost/~kevin/cho tôi thông báo "Không tìm thấy URL được yêu cầu / ~ kevin / trên máy chủ này."

Đây là httpd.conftệp của tôi trong trường hợp có ai cần xem nó. Nếu có điều gì sai với nó, tôi sẽ rất biết ơn nếu ai đó có thể đăng httpd.conftệp của họ để tôi có thể khôi phục và làm lại.

#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see 
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.  
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" 
# will be interpreted as '/logs/access_log'.

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used.  If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot "/usr"

#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
# for individual mutexes, or change the global defaults
#
# Uncomment and change the directory if mutexes are file-based and the default
# mutex file directory is not on a local disk or is not appropriate for some
# other reason.
#
# Mutex default:/private/var/run

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule authn_file_module libexec/apache2/mod_authn_file.so
#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_socache_module libexec/apache2/mod_authn_socache.so
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_dbd_module libexec/apache2/mod_authz_dbd.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
#LoadModule authnz_ldap_module libexec/apache2/mod_authnz_ldap.so
LoadModule access_compat_module libexec/apache2/mod_access_compat.so
LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_form_module libexec/apache2/mod_auth_form.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule allowmethods_module libexec/apache2/mod_allowmethods.so
#LoadModule file_cache_module libexec/apache2/mod_file_cache.so
#LoadModule cache_module libexec/apache2/mod_cache.so
#LoadModule cache_disk_module libexec/apache2/mod_cache_disk.so
#LoadModule cache_socache_module libexec/apache2/mod_cache_socache.so
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
#LoadModule socache_dbm_module libexec/apache2/mod_socache_dbm.so
#LoadModule socache_memcache_module libexec/apache2/mod_socache_memcache.so
#LoadModule watchdog_module libexec/apache2/mod_watchdog.so
#LoadModule macro_module libexec/apache2/mod_macro.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule dumpio_module libexec/apache2/mod_dumpio.so
#LoadModule echo_module libexec/apache2/mod_echo.so
#LoadModule buffer_module libexec/apache2/mod_buffer.so
#LoadModule data_module libexec/apache2/mod_data.so
#LoadModule ratelimit_module libexec/apache2/mod_ratelimit.so
LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so
#LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
#LoadModule request_module libexec/apache2/mod_request.so
#LoadModule include_module libexec/apache2/mod_include.so
LoadModule filter_module libexec/apache2/mod_filter.so
#LoadModule reflector_module libexec/apache2/mod_reflector.so
#LoadModule substitute_module libexec/apache2/mod_substitute.so
#LoadModule sed_module libexec/apache2/mod_sed.so
#LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
#LoadModule deflate_module libexec/apache2/mod_deflate.so
#LoadModule xml2enc_module libexec/apache2/mod_xml2enc.so
#LoadModule proxy_html_module libexec/apache2/mod_proxy_html.so
LoadModule mime_module libexec/apache2/mod_mime.so
#LoadModule ldap_module libexec/apache2/mod_ldap.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
#LoadModule log_debug_module libexec/apache2/mod_log_debug.so
#LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so
#LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
#LoadModule usertrack_module libexec/apache2/mod_usertrack.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule version_module libexec/apache2/mod_version.so
#LoadModule remoteip_module libexec/apache2/mod_remoteip.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_fdpass_module libexec/apache2/mod_proxy_fdpass.so
LoadModule proxy_wstunnel_module libexec/apache2/mod_proxy_wstunnel.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
LoadModule proxy_express_module libexec/apache2/mod_proxy_express.so
#LoadModule session_module libexec/apache2/mod_session.so
#LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so
#LoadModule session_dbd_module libexec/apache2/mod_session_dbd.so
LoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so
#LoadModule slotmem_plain_module libexec/apache2/mod_slotmem_plain.so
#LoadModule ssl_module libexec/apache2/mod_ssl.so
#LoadModule dialup_module libexec/apache2/mod_dialup.so
LoadModule lbmethod_byrequests_module libexec/apache2/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module libexec/apache2/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module libexec/apache2/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_heartbeat_module libexec/apache2/mod_lbmethod_heartbeat.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
#LoadModule heartbeat_module libexec/apache2/mod_heartbeat.so
#LoadModule heartmonitor_module libexec/apache2/mod_heartmonitor.so
#LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
#LoadModule asis_module libexec/apache2/mod_asis.so
#LoadModule info_module libexec/apache2/mod_info.so
#LoadModule cgi_module libexec/apache2/mod_cgi.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
#LoadModule imagemap_module libexec/apache2/mod_imagemap.so
#LoadModule actions_module libexec/apache2/mod_actions.so
#LoadModule speling_module libexec/apache2/mod_speling.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin you@example.com

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# <Directory> blocks below.
#
<Directory />
    AllowOverride none
    Require all denied
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
    Require all denied
</FilesMatch>

#
# Apple specific filesystem protection.
#
<Files "rsrc">
    Require all denied
</Files>
<DirectoryMatch ".*\.\.namedfork">
    Require all denied
</DirectoryMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "/private/var/log/apache2/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
CustomLog "/private/var/log/apache2/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "/private/var/log/apache2/access_log" combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to 
    # exist in your server's namespace, but do not anymore. The client 
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock cgisock
</IfModule>

#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig /private/etc/apache2/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile /private/etc/apache2/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited

#
# EnableMMAP and EnableSendfile: On systems that support it, 
# memory-mapping or the sendfile syscall may be used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted 
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
#EnableSendfile on

TraceEnable off

# Supplemental configuration
#
# The configuration files in the /private/etc/apache2/extra/ directory can be 
# included to add extra features or to modify the default configuration of 
# the server, or you may simply copy their contents here and change as 
# necessary.

# Server-pool management (MPM specific)
Include /private/etc/apache2/extra/httpd-mpm.conf

# Multi-language error messages
#Include /private/etc/apache2/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include /private/etc/apache2/extra/httpd-autoindex.conf

# Language settings
#Include /private/etc/apache2/extra/httpd-languages.conf

# User home directories
#Include /private/etc/apache2/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include /private/etc/apache2/extra/httpd-info.conf

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include /private/etc/apache2/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include /private/etc/apache2/extra/httpd-dav.conf

# Various default settings
#Include /private/etc/apache2/extra/httpd-default.conf

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include /private/etc/apache2/extra/proxy-html.conf
</IfModule>

# Secure (SSL/TLS) connections
#Include /private/etc/apache2/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include /private/etc/apache2/other/*.conf

#
# uncomment out the below to deal with user agents that deliberately
# violate open standards by misusing DNT (DNT *must* be a specific
# end-user choice)
#
#<IfModule setenvif_module>
#BrowserMatch "MSIE 10.0;" bad_DNT
#</IfModule>
#<IfModule headers_module>
#RequestHeader unset DNT env=bad_DNT
#</IfModule>

Người đàn ông này dài ...


2
Đối với những người mới đó, tệp nằm ở: / etc / apache2
SMBiggs

1
Liên kết này đã giúp tôi giải quyết các vấn đề cho Thuyền trưởng.
Borzh

Câu trả lời:


190

Có vẻ như bạn cần bỏ ghi chú những điều sau:

#LoadModule userdir_module libexec/apache2/mod_userdir.so

#Include /private/etc/apache2/extra/httpd-userdir.conf

Sau đó, trong httpd-userdir.conf, bạn có thể cần bỏ ghi chú:

#Include /private/etc/apache2/users/*.conf

Cuối cùng, bạn sẽ cần tạo /private/etc/apache2/users/kevin.conf nếu nó không tồn tại. Tôi nghĩ nó sẽ trông giống như thế này:

<Directory "/Users/kevin/Sites/">
  Options Indexes MultiViews
  AllowOverride None
  Require all granted
</Directory>

Đảm bảo khởi động lại máy chủ Apache sau đó bằng:

sudo apachectl restart

17
FYI, nếu bạn đang cố gắng sử dụng PHP trên Yosemite, bạn có thể sẽ phải bỏ ghi chú dòng sau từ /etc/apache2/httpd.conf:LoadModule php5_module libexec/apache2/libphp5.so
Joshua Pinter

2
Đó #Include /private/etc/apache2/users/*.conflà chìa khóa tôi cần.
mrcoulson

4
Không hoạt động với El Capitan. Cụ thể là tôi nhận được 404 ... thở dài. Các cài đặt này sẽ bị mất với mọi phiên bản OS X.
Jonny

2
cho EL Capitano đây là cấu hình làm việc coolestguidesontheplanet.com/...
fbenedet

2
Trong OS X El Capitan (10.11.3), tôi đã làm tất cả những điều đó (cũng tìm trong liên kết coolestguidesontheplanet.com), nhưng dường như không có gì hoạt động. Các trang chính thì OK, các trang người dùng báo lỗi 404. Bất kỳ ý tưởng?
Gik

80

Đối với những người hiếm hoi dành nhiều thời gian như tôi đã tự hỏi tại sao không có tài nguyên hoặc bài đăng nào khác hoạt động ... điều này là dành cho bạn. Tôi đã dành 6 giờ (tại nơi làm việc) hoàn toàn dành cho việc giải quyết vấn đề cấp phép chết tiệt này và đây là giải pháp của tôi. XIN LƯU Ý : Khi bắt đầu giải quyết vấn đề này, tôi có thể truy cập localhost(trong Chrome), nhận được kết quả mong muốn It Works!. Vì vậy, hãy chắc chắn rằng bạn ít nhất có thể đạt được điều đó trước khi tiếp tục.


Tôi đang sử dụng PHP v5.5.14 trên Macbook Pro Retina ( giữa năm 2014 ) đang chạy OS X Yosemite ( Tôi đã thử nghiệm điều này một lần nữa bằng cách sử dụng bản cập nhật El Capitan gần đây của Apple và được xác nhận là một giải pháp! ). Vấn đề của tôi là tôi đã nhận được LỖI 403 cho biết rằng quyền đã bị từ chối bất cứ khi nào cố gắng truy cập localhost/~userDirName/. Giải pháp của tôi bao gồm 3 bước đơn giản:

BƯỚC 1:

Tải userdirmô-đun bằng cách tìm hai dòng sau /etc/apache2/httpd.confvà bỏ ghi chú chúng bằng cách xóa dấu thăng ( # ) ở đầu:

LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf

BƯỚC 2:

Điều hướng đến /etc/apache2/extra/httpd-userdir.confvà bỏ ghi chú dòng sau ( theo cách tương tự như bước 1 ):

Include /private/etc/apache2/users/*.conf

BƯỚC 3:

Chỉnh sửa /etc/apache2/users/fileYouMade.conf. Bạn phải thêm Require localvà một +ký tự trước mỗi đối số dành riêng cho tùy chọn. Kết quả sẽ như thế này:

<Directory "/Users/user/Sites/">
    Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI
    AllowOverride All
    Require local
    Order allow,deny
    Allow from all
</Directory>

Cảm ơn, nó cũng đã giải quyết được vấn đề của tôi, tôi rất vui khi biết tại sao nó không hoạt động với Yêu cầu cục bộ và dấu +!
Sassan

Trong trường hợp của tôi, câu trả lời James đã hoạt động, nhưng tôi cũng thiếu thư mục Sites, vì vậy tôi phải: mkdir ~ / Sites
IRPdevelop

Bạn rõ ràng sẽ thêm một thư mục nếu nó bị thiếu ... điều đó không cần phải nói.
James

Không. Có phải điều đó (trong OSX v10.11.3) - (và tất cả những thứ khác), nhưng tôi vẫn gặp lỗi 404 cho các trang người dùng ... Bất kỳ ý tưởng nào?
Gik

1
@Gik Tôi vừa kiểm tra điều này và vẫn nhận được phản hồi mong muốn. hãy thử tìm nơi khác trước khi "nope"
James

8

đây là một tập lệnh tôi đã viết bởi vì tôi cảm thấy mệt mỏi với việc tìm kiếm cách thực hiện việc này trên Google mỗi khi tôi nâng cấp hệ điều hành x.

#!/bin/sh

# edit httpd.conf to allow home directories.
# some day just rip out httpd and replace with nginx

bin=$(basename "${0}")
conf="/etc/apache2/httpd.conf"

if [ $(id -u) -ne 0 ]
then
  echo "ERROR: ${bin} must run as root. goodbye."
  exit 1
fi

# make backup file
n=1
while [ -f "${conf}.bak.${n}" ]
do
  let n=${n}+1
done
cp "${conf}" "${conf}.bak.${n}"

# edit httpd.conf in place - uncomment out two lines
sed -i ''                                                                 \
    -e '/^#.*[[:space:]]userdir_module[[:space:]]/s/^#*//'                \
    -e '/#Include \/private\/etc\/apache2\/extra\/httpd-userdir.conf/s/^#//'   \
    "${conf}"

echo "INFO: ${bin}:"
echo "INFO: ${bin}: check that this looks OK"
echo "INFO: ${bin}: % cat /private/etc/apache2/extra/httpd-userdir.conf"
echo "INFO: ${bin}:"
cat /private/etc/apache2/extra/httpd-userdir.conf
echo "INFO: ${bin}:"
echo "INFO: ${bin}: in particular, that '/private/etc/apache2/users/*.conf' files look OK"
ls /private/etc/apache2/users/*.conf
echo "INFO: ${bin}:"
echo "INFO: ${bin}: hint: check for /private/etc/apache2/users/${SUDO_USER}.conf"
if [ -f "/private/etc/apache2/users/${SUDO_USER}.conf" ]
then
  echo "INFO: ${bin}: /private/etc/apache2/users/${SUDO_USER}.conf exists. See if it is OK."
else
  echo "INFO: ${bin}: /private/etc/apache2/users/${SUDO_USER}.conf does NOT exist."
fi  
echo "INFO: ${bin}:"
echo "INFO: ${bin}: here is a sample conf file (with php and perl enabled)."
echo "INFO: ${bin}:"
cat<<!
<Directory "/Users/${SUDO_USER}/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
  Require all granted
  Options +ExecCGI
  AddHandler cgi-script .cgi .pl
</Directory>
!
echo "INFO: ${bin}:"
echo "INFO: ${bin}: restarting apache httpd"
sudo apachectl restart
echo "INFO: ${bin}:"

Siêu hữu ích! Cảm ơn bạn đã cung cấp các kịch bản!
CocoHot

6

Câu trả lời từ user3814420 là đúng nếu bạn sử dụng đường dẫn đến dự án của bạn.

Nhưng nếu bạn vẫn gặp sự cố như tôi đã gặp phải khi sử dụng máy chủ ảo:

Một lưu ý cần lưu ý về máy chủ ảo là sau khi thiết lập, bạn sẽ mất gốc tài liệu cũ trước đó tại / LIbrary / WebServer / Documents hoặc được truy cập trong trình duyệt tại localhost, điều sẽ xảy ra là bạn gặp lỗi 403 Forbidden. Nhưng gốc tài liệu ~ / tên người dùng vẫn tương thích.

Để giải quyết vấn đề này, bạn cần thêm vhost cho localhost và khai báo vhost này trước bất kỳ vhost nào khác, trong cùng một tệp:

sudo nano /etc/apache2/extra/httpd-vhosts.conf

Thêm vào trong:

<VirtualHost *:80>
ServerName localhost
DocumentRoot /Library/WebServer/Documents/
</VirtualHost>

Khởi động lại apache

sudo apachectl restart

Thay đổi Người dùng Mặc định WebServer

Một trong những điều khó chịu khi sử dụng thư mục Users / username / Sites cho vhosts là các vấn đề về quyền với những thứ như cập nhật và xác thực.

Điều này là do người dùng máy chủ web mặc định chạy httpd được gọi là _www, sẽ không phải là người dùng trong tài khoản cục bộ của bạn. Nếu máy của bạn chỉ được sử dụng bởi bạn và máy chủ web sẽ chỉ chạy trong tài khoản của bạn thì bạn có thể thay đổi người dùng.

Để tìm người dùng và nhóm của bạn trong Terminal, hãy sử dụng lệnh id để xem tên người dùng và nhóm của bạn

id

Bạn sẽ nhận được một loạt các nhóm người dùng, bạn cần uid người dùng chính và tên gid của nhóm

uid=502(your_user_name) gid=20(staff)

Sau khi chỉnh sửa /etc/apache2/httpd.conf

sudo nano /etc/apache2/httpd.conf

tìm khối

<IfModule unixd_module>

và bình luận

#User _www
#Group _www

sau khi thêm uid người dùng 2 dòng mới và trong trường hợp của tôi, gid nhóm được xác định bằng lệnh id ở trên:

User your_user_name
Group staff

Nguồn: http://coolestguidesontheplanet.com/set-virtual-hosts-apache-mac-osx-10-10-yosemite/


Phần virtualhost "Tên máy chủ localhost" đã làm điều đó cho tôi. Cám ơn rất nhiều!
user2010496

4

Làm theo các hướng dẫn sau từ đầu đến cuối phù hợp với tôi: https://www.computersnyou.com/3376/setup-apache-php-mysql-macosx-10-10-yosemite/

Các hướng dẫn cơ bản được thêm vào để phản hồi đề xuất từ ​​rozkosz:

Các hướng dẫn này là để thiết lập apache từ đầu sau khi nâng cấp Yosemite. Có vẻ như bạn đã làm hầu hết những điều này nhưng bạn cần phải chỉnh sửa /etc/apache2/users/YOURUSERNAME.conf. Trong mọi trường hợp, đây là bản tóm tắt toàn bộ:

bỏ ghi chú sau trong /etc/apache2/httpd.conf

LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so 
LoadModule userdir_module libexec/apache2/mod_userdir.so 
Include /private/etc/apache2/extra/httpd-userdir.conf

Sau đó, truy cập /etc/apache2/extra/httpd-userdir.confvà bỏ ghi chú:

Include /private/etc/apache2/users/*.conf 

Tệp của bạn /etc/apache2/users/YOURUSERNAME.confphải chứa những thứ sau:

<Directory /Users/*/Sites>
  DirectoryIndex index.html index.php index index.html default.html default.htm
  AllowOverride FileInfo AuthConfig Limit Indexes
  Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
  <Limit GET POST OPTIONS>
   Require all granted
  </Limit>
  <LimitExcept GET POST OPTIONS>
   Require all denied
  </LimitExcept>
</Directory>

Bây giờ, hãy tạo thư mục Sites trong thư mục chính của bạn, khởi động lại apache và tất cả sẽ hoạt động bình thường.


Vui lòng thêm tóm tắt nội dung của liên kết trong trường hợp bài đăng được liên kết tham chiếu đến biến mất. Cảm ơn.
Christopher Rapcewicz

4

Tiếp tục cho El Captain, với sự hỗ trợ của người dùng:

  • sudo nano / private / etc / apache2 / users / username .conf

    <Directory "/Users/noone/Sites/">
        Options Indexes MultiViews FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from localhost
        Require all granted
    </Directory>
    
  • sudo nano /etc/apache2/httpd.conf, bỏ ghi chú:

    LoadModule userdir_module libexec/apache2/mod_userdir.so
    LoadModule include_module libexec/apache2/mod_include.so
    LoadModule rewrite_module libexec/apache2/mod_rewrite.so
    LoadModule cgi_module libexec/apache2/mod_cgi.so
    LoadModule php5_module libexec/apache2/libphp5.so
    
    Include /private/etc/apache2/extra/httpd-userdir.conf
    
  • sudo nano /etc/apache2/extra/httpd-userdir.conf, bỏ ghi chú:

    Include /private/etc/apache2/users/*.conf
    
  • apachectl configtest

  • sudo apachectl khởi động lại

Lấy từ đây .


0

Trong Apache 2, bạn phải bật mod_userdirtiện ích mở rộng, ví dụ:

a2enmod userdir

Tiền tố với sudonếu được yêu cầu.

Sau đó tải lại / khởi động lại Apache.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.