máy khách apache bị từ chối bởi cấu hình máy chủ sau khi mac OS X nâng cấp lên Yosemite


12

Tôi biết điều này có vẻ tương tự như các câu hỏi khác nhưng dường như Yosemite đã thay đổi điều gì đó với cấu hình apache với bản nâng cấp. nhật ký lỗi của tôi cho biết "máy khách bị từ chối bởi cấu hình máy chủ: /Users/doumund/Sites/testpatient.php"

Phiên bản Apache: MacBook-Pro: apache2 douecraft $ apachectl -v Phiên bản máy chủ: Apache / 2.4.9 (Unix) Máy chủ được xây dựng: ngày 9 tháng 9 năm 2014 14:48:20 tệp douecraft.conf của tôi là 644 root / wheel và như sau:

<Directory "/Users/douglas/Sites">
   Options Indexes Multiviews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

http.conf của tôi có các mục sau:

# 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>

...

DocumentRoot "/Library/WebServer/Documents"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Satisfy All
</Directory>

...

<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.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks MultiViews

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
#AllowOverride None
AllowOverride All
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
Satisfy All
</Directory>

Bất cứ điều gì sẽ được đánh giá cao. Tôi đã thử quay lại tệp http.conf trước đó nhưng có một số khác biệt về các mô-đun cần được tải. Hoàn toàn có thể là tôi đã bỏ lỡ một mô-đun nhưng không có khiếu nại trong nhật ký.


Trong khi câu trả lời của chrisMc được đặt ra, những người vấp ngã trong tương lai cũng có thể muốn đọc cài đặt Apache, PHP và MySQL trên Mac OS X Yosemite .
Jason McCreary

Câu trả lời:


17

Trong người dùng của bạn .conf (douecraft.conf) thay thế:

Order allow,deny
Allow from all

Với:

Require all granted

Sự khác biệt là cách apache 2.4 xử lý các quyền

http://httpd.apache.org/docs/2.4/upgrad.html


Tôi đã thay đổi cài đặt trong httpd.conf và douecraft.conf nhưng tôi vẫn gặp lỗi tương tự
new2code

1
Đừng quên khởi động lại Apache
Thomas Edwards

Điều này thật tuyệt, mặc dù Đơn hàng / Cho phép / Từ chối cũ vẫn hoạt động nếu bạn access_compatbật mô-đun. Tôi nghĩ sẽ tốt hơn nếu tôi gặp lỗi và sửa các thiết lập của mình thay vì để nó lâu hơn với các cấu hình cũ.
Alexis Wilke

11

Tôi cũng gặp vấn đề tương tự và đã khắc phục bằng cách làm như vậy:

  1. Tải mô-đun userdir bằng cách tìm các dòng sau trong httpd.conf và bỏ ghi chú: LoadModule userdir_module libexec/apache2/mod_userdir.so Include /private/etc/apache2/extra/httpd-userdir.conf

  2. Chỉnh sửa thêm / httpd-userdir.conf , tìm và bỏ ghi dòng sau: Include /private/etc/apache2/users/*.conf

  3. Chỉnh sửa người dùng / *. Conf , thêm Require localvà thêm +(hoặc -) ký tự trước tất cả các tùy chọn trong dòng tùy chọn, như vậy: <Directory "/Users/user/Sites/"> Options +Indexes +MultiViews +FollowSymLinks +SymLinksIfOwnerMatch +ExecCGI AllowOverride All Require local Order allow,deny Allow from all </Directory>


1
Điều này (chính xác là thế này, không hơn, không kém) làm việc cho tôi, khi không có gì khác làm. Cám ơn!
orome

1

Tôi đã trải nghiệm điều tương tự nhưng trên Mavericks sau khi áp dụng bản cập nhật bảo mật từ vài ngày trước. Mavericks vẫn đang sử dụng Apache 2.2, do đó, đây không phải là vấn đề cấu hình mà chrisMc đã đề cập, mặc dù có vẻ như anh ấy đúng và bạn cũng cần thay đổi điều đó.

Trong trường hợp của tôi, trước tiên tôi đã giải quyết vấn đề cốt lõi bằng cách nhận xét dòng mô-đun Homebrew PHP 5.4 mà tôi đã thêm trước đó. Trong httpd.conf:

#LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so

Và thay vào đó, chọn mô-đun PHP mặc định mà tôi đã nhận xét trước đó:

LoadModule php5_module libexec/apache2/libphp5.so

Điều đó đã sửa nó, nhưng về lý do tại sao phiên bản Homebrew bị hỏng , tôi nghĩ có lẽ một thư viện hệ thống được biên dịch lại đã được cập nhật trong bản cập nhật bảo mật. Khi tôi chạy, php -vtôi nhận được một cảnh báo về một icu4cthư viện không được tải.

Vì vậy, tôi chỉ biên dịch lại PHP và nó hoạt động trở lại. Trong trường hợp của tôi, tôi vừa làm

brew uninstall php54
brew install php54

Sau đó, mô-đun Homebrew có thể được kích hoạt lại.


1

Vì tôi chưa bao giờ sử dụng homebrew nên cuối cùng tôi đã làm theo hướng dẫn này. Thiết lập để phát triển cá nhân .

Tôi đã thấy rằng các quyền mà người đăng đầu tiên đang nói là một phần của vấn đề, nhưng tôi vẫn gặp vấn đề về quyền với thiết lập cá nhân bằng cách sử dụng tệp user.conf. Thiết lập này đã sử dụng máy chủ ảo. Tôi không biết homebrew đã làm gì để giải quyết vấn đề. Tôi đoán tôi sẽ gọi đây là một công việc xung quanh vì nó không khắc phục được vấn đề ban đầu của tôi, đó là tôi không thể truy cập bất cứ thứ gì trên máy chủ web bằng tệp user.conf.


Tuyệt vời! Chìa khóa đối với tôi chỉ đơn giản là nhận xét các dòng 220-221 ( # AllowOverride none# Require all denied) dường như mới được thêm vào trong Yosemite.
MarkHu

0

Trong sự bất ngờ httpd.conf:

LoadModule authz_core_module libexec/apache2/mod_authz_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

Và trong sự bất ngờ /etc/apache2/extra/httpd-userdir.conf:

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

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


0

Các câu trả lời ở trên làm việc, trên một cài đặt chứng khoán. Nếu không, một vài điều có thể giúp:

  1. Trên hệ thống tệp của bạn, thư mục cần phải chính xác là các Trang web có chữ S viết hoa (tên thư mục được mã hóa cứng trong mô-đun userdir, không thể khác được) Quyền của nó phải là:

    drwxr-xr-x   2 username staff    68 29 mar 11:26 Sites
    
  2. Các <Directory…>cấu hình được áp dụng trên đầu trang của nó, vì vậy nó cần phải phù hợp với tên thư mục chính xác, kể cả trường hợp (chúng tôi đang đến từ Linux ...).

    Quyền của /etc/apache2/users/username.conftập tin:

    -rw-r--r--  1 root  wheel  189 29 mar 11:42 username.conf
    

Vì vậy, hãy đảm bảo rằng dòng tham chiếu <Directory "/Users/user/Sites/">chính xác đến đúng thư mục với tên người dùng phù hợp (với người dùng khớp với tên của tệp cấu hình), bao gồm trường hợp và Sitesthư mục tồn tại chính xác như trường hợp được bao gồm.


0

Trong trường hợp của tôi, phiên bản apache 2.4.27.

Đã giải quyết vấn đề sau khi Thay đổi tệp httpd-vhosts.conf của tôi từ thư mục " /etc/apache2/extra/httpd-vhosts.conf ".

Từ

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>

Đến,

<VirtualHost *:80>
    ServerName inventory.loc
    ServerAlias www.inventory.loc
    DocumentRoot "/Users/Vagabond/Sites/inventory/public/"
    <Directory /Users/Vagabond/Sites/inventory/public/>
        Require all granted
        Options Includes FollowSymLinks
    </Directory>
    ErrorLog "/Users/Vagabond/Sites/logs/inventory.loc-error_log"
    CustomLog "/Users/Vagabond/Sites/logs/inventory.loc-access_log"
</VirtualHost>
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.