Apache không hoạt động với thư mục Trang web của người dùng trên macOS 10.13 High Sierra


8

Tôi đã làm theo hướng dẫn này để thiết lập Apache trên High Sierra: https://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin- Business -on-macos-sierra /

Tôi đã sử dụng nó để thiết lập nó trên Sierra.

Nhưng khi tôi đến, http://localhost/~scott/tôi nhận được "Cấm. Bạn không có quyền truy cập / ~ scott / trên máy chủ này."

Một gợi ý cho câu hỏi tương tự này: localhost / userdir trên macOS High Sierra là tải vhosts. Mà tôi đã thử, nhưng vẫn nhận được "Cấm".

Có bất cứ điều gì thay đổi giữa Sierra và High Sierra sẽ ngăn Apache làm việc với các thư mục Trang web của người dùng không?


Hãy thử apachectl configtestvà cập nhật đầu ra
Rakesh kumar

Trả vềSyntax OK
sfyfedotcom

Được rồi, vui lòng truy cập URL localhost / ~ yourusername
Rakesh kumar

"Bị cấm. Bạn không có quyền truy cập / ~ scott / trên máy chủ này."
sfyfedotcom

Câu trả lời:


8

Điều này làm việc cho tôi khi tôi gặp vấn đề tương tự.

Vui lòng kiểm tra tệp "/private/etc/apache2/extra/httpd-userdir.conf".

thay đổi

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

đến

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

và khởi động lại apache.

Từ: /programming/39431351/apache-localhost-403-forbidden-with-macos-sierra


Dòng đó /private/etc/apache2/extra/httpd-userdir.confđã bị bỏ sót, từ liên kết hướng dẫn tôi đã theo dõi.
sfyfedotcom

bạn đã khởi động lại apache "sudo apachectl restart"
Robert

Đúng. Tôi đã thực hiện với tất cả các thay đổi đối với các tệp cấu hình của Apache
sfyfedotcom

4

Để cho phép truy cập vào thư mục Trang web, bạn phải thêm các mục sau vào /etc/apache2/httpd.conf:

<DirectoryMatch "/Users/.*/Sites">
  Require all granted
</DirectoryMatch>

Cấu hình Apache mặc định được đặt thành bị từ chối trên /, vì vậy bạn phải cho phép truy cập mọi thứ một cách rõ ràng.


Đã thêm và khởi động lại apache. Không có sự khác biệt nào
sfyfedotcom

Tôi đã từng gặp vấn đề tương tự. Đã nhận được "Nó hoạt động!" trên locahost, nhưng không thể làm cho các thư mục người dùng hoạt động. Sửa quy tắc DirectoryMatch như thế này đã giải quyết nó. Cảm ơn!
Karra

4

Chỉ để mở rộng câu trả lời của Diogo Lima.

Với việc nâng cấp lên High Sierra, Apple đã tạo các bản sao cài đặt apache trước đó của bạn và nối thêm a ~ trước vào các tệp * .conf cả trong các thư mục / etc / apache2 và / etc / apache2 / thêm. Nếu bạn đang sử dụng máy chủ ảo hoặc máy chủ ảo ssl thì bạn cũng cần phải di chuyển các phiên bản trước đó cho các tệp .conf đó.

mv /etc/apache2/extra/httpd-vhosts.conf~previous /etc/apache2/extra/httpd-vhosts.conf
mv /etc/apache2/extra/httpd-ssl.conf~previous /etc/apache2/extra/httpd-ssl.conf

Đây là bản cài đặt sạch của High Sierra, vì vậy tôi không có bất kỳ tệp cấu hình nào trước đó
sfyfedotcom

Vì vậy, chỉ cần làm rõ, bạn đã có nó hoạt động trên Sierra, nhưng không thực hiện nâng cấp, mà là cài đặt hoàn toàn sạch? Tôi nhớ lại khi tôi thiết lập để nó hoạt động trên Sierra mà tôi đã tạo một liên kết tượng trưng từ thư mục Trang web của tôi đến thư mục / Library / WebServer / Documents và đảm bảo rằng tôi đã cấp phép cho mình (đọc và viết). Vì nghe có vẻ chỉ là vấn đề quyền ở giai đoạn này, bạn đã tạo liên kết tượng trưng và thay đổi quyền chưa?
James Martin

Vâng đúng rồi. Tôi luôn luôn cài đặt sạch các phiên bản macOS mới. Tôi biết tôi có thể làm điều đó, nhưng tôi muốn duy trì cả hai /Library/WebServer/DocumentsUsers/username/Sitesnhư các vị trí riêng biệt cho các dự án web, vì đó là những gì tôi đã có thể làm trên macOS trong hơn 10 năm qua.
sfyfedotcom

Vì vậy, có vẻ như bạn sẽ cần chạy hai phiên bản Apache riêng biệt trên cùng một máy nhưng điều đó sẽ không đánh bại toàn bộ mục đích tải cân bằng các trang web mà Apache hiện cung cấp khi chạy từ một cá thể? Khuyến nghị thực hành tốt nhất của Apple là không sử dụng Người dùng / tên người dùng / Trang web và gắn bó với Thư viện / Máy chủ web / Tài liệu
James Martin

Ví dụ Apache duy nhất là cáp đọc các dự án web từ nhiều thư mục. Đó là cách tôi đã thiết lập nó trong nhiều năm.
sfyfedotcom



1

Chỉ cần cập nhật sáng nay. Sử dụng thư mục Trang web trong / Người dùng / tên người dùng.

Đã sao lưu và thay thế httpd.conf, httpd-userdir.conf và https-vhosts.conf với các biến thể trước đó.

Chạy sudo apachectl configtestvà gặp lỗi PHP (PHP được cập nhật lên 7 ở High Sierra). Đã chỉnh sửa http.conf để khởi động PHP7 và bây giờ mọi thứ đang hoạt động trở lại.


+1 để bao gồm ghi chúsudo apachectl configtest
David C

1

Giải pháp có thể (sau khi thất bại với tất cả các đề xuất trên). Vấn đề là với sự cho phép của thư mục nhà. Nó nên được thực thi cho nhóm / người khác:

sudo chmod go + x / Người dùng / tên người dùng

trong đó "tên người dùng" sẽ được thay thế bằng tên người dùng thực tế. Sau này, nó hoạt động!


0

Phù !! Tôi tự tìm ra nó.

Thực hiện các bước này

Bước 1: Mở terminal của bạn và chạy lệnh này bên dưới

sudo atom /etc/apache2/httpd.conf

Và sau đó bỏ ghi chú Line bằng cách xóa "#"ký hiệu trước nó

LoadModule php7_module libexec/apache2/libphp7.so

Bước 2: Chạy lệnh sau được đề cập dưới đây

cd /private/etc

sudo cp php.ini.default php.ini

Bước 3: Sau đó vào /Library/WebServer/Documentsthư mục của bạn và làm một

sudo chown -R  root yourprojectname

Quay trở lại trình duyệt Safari của bạn và nhập "http://localhost/yourprojectname"

Bạn đã sẵn sàng để đi.

Tôi đang sử dụng MacOS High Sierra 10.13, nó đã được cập nhật vào sáng hôm qua.


localhostchạy từ /Library/WebServer/Documentsđang hoạt động tốt. Vấn đề là chạy localhost/~scotttừ /Users/Scott/Sites.
sfyfedotcom

0

Dành cả buổi sáng để tìm ra nó, nhưng cuối cùng nó đã hoạt động. Hy vọng điều này có thể hữu ích cho ai đó.

Tôi đã làm theo một hướng dẫn, nhưng với một chút thay đổi.

Bây giờ tôi có thể truy cập các thư mục localhost, nhưng ...

Trước khi sierra cao, nó giống như: http://localhost/~username/smomesite.local

Bây giờ giống như: http://localhost/smomesite.local

Không ~usernameyêu cầu nhiều hơn .


Tôi không muốn thay đổi đường dẫn web apache mặc định sang thư mục người dùng của mình. Trong phiên bản trước của macOS, tôi đã có thể chạy các tệp / trang web từ cả Users/myname/Sitesthư mục và/Library/WebServer/Documents
sfyfedotcom

0

Tôi chỉ gặp vấn đề tương tự và muốn thực hiện chính xác những gì bạn muốn (giữ thư mục gốc tại / Library / WebServer / Documents, nhưng cũng cho phép các thư mục Trang web của người dùng). Tôi không chắc liệu điều này có hữu ích hay không, nhưng sau khi đập vào nó hàng giờ tối nay, tìm từng dòng thông qua tất cả các tệp .conf và tự hỏi điều gì đã sai, tôi nhận ra rằng quá trình httpd không thể đọc được thư mục người dùng riêng. Vì một số lý do, nó được đặt là 750 và người dùng _www không thể đọc được. Khi tôi đã sửa nó bằng cách chạy "chmod 755." trên thư mục người dùng của tôi, thư mục Trang web hiển thị ngay.

Tôi không chắc làm thế nào thư mục người dùng của riêng tôi có được như vậy, vì có vẻ như họ mặc định là 755 khi tôi tạo một người dùng mới. Và tôi đã kiểm tra lại nhiều lần rằng thư mục Trang web của tôi được đặt thành 755.


Chỉ cần thử điều đó và khởi động lại Apache. Vẫn "Bị cấm: Bạn không có quyền truy cập / ~ tên người dùng / trên máy chủ này"
sfyfedotcom

0

Tôi đã từng gặp vấn đề tương tự. Tôi đã bỏ ghi chú hai dòng bên dưới (như đã đề xuất trong phản hồi khác)

#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Nhưng vẫn nhận được lỗi tương tự. Thủ thuật đối với tôi là bỏ ghi chú những dòng bổ sung này trong tệp httpd.conf:

#LoadModule userdir_module libexec/apache2/mod_userdir.so 
#LoadModule include_module libexec/apache2/mod_include.so 
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so

Mong rằng sẽ giúp.


Tôi đã không chú ý đến những dòng đó
sfyfedotcom

0

Nó xảy ra rằng bản cập nhật đã chuyển tất cả cấu hình trước đó của bạn sang các tệp .conf ~ trước đó. Nếu bạn di chuyển /etc/apache2/extra/httpd-userdir.conf ~ thêm / httpd.conf, nó sẽ hoạt động như trước.

mv /etc/apache2/extra/httpd-userdir.conf /etc/apache2/extra/httpd-userdir.conf~high-sierra
mv /etc/apache2/httpd.conf /etc/apache2/httpd.conf~high-sierra
mv /etc/apache2/extra/httpd-userdir.conf~previous /etc/apache2/extra/httpd-userdir.conf
mv /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf
apachectl restart

Đây là bản cài đặt sạch của High Sierra, vì vậy tôi không có bất kỳ tệp cấu hình nào trước đó
sfyfedotcom

0

Tôi cũng từng gặp vấn đề tương tự. Việc giải quyết rất dễ dàng. Xem câu trả lời được đăng tại đây: https://apple.stackexchange.com/a/306390/129503

Tôi đã đối mặt như vậy sau khi tôi nâng cấp lên High Sierra sớm hôm nay. Tôi thấy rằng các tập tin apache sau đây đã được thay thế bằng các phiên bản hoàn toàn mới. May mắn thay cho tất cả các tệp này đã tồn tại một tệp FILE ~ trước đó trong cùng một thư mục. Tôi chỉ sao chép ~ phiên bản trước đó trở lại phiên bản gốc, khởi động lại apache và mọi thứ đều ổn.

Trong thư mục /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Thí dụ:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

0

Thay thế

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

từ các tập tin cũ hơn ~ trước đó.

Bạn có thể gặp lỗi mô-đun php5 trong httpd.conf, thay thế php5 bằng php7 và các trang web của bạn sẽ bắt đầu hoạt động.

Thay thế

LoadModule php5_module libexec/apache2/libphp5.so

Với

LoadModule php7_module libexec/apache2/libphp7.so

0

Tôi chỉ nâng cấp và có chính xác các vấn đề tương tự. Tôi không sử dụng vhost. Giải pháp cho tôi là đảm bảo:

Trong sự bất https.confhạnh

LoadModule userdir_module libexec/apache2/mod_userdir.so

LoadModule authz_host_module libexec/apache2/mod_authz_host.so

LoadModule authz_user_module libexec/apache2/mod_authz_user.so

LoadModule authz_core_module libexec/apache2/mod_authz_core.so

và đảm bảo extra/httpd-user.confcó dòng:

UserDir Sites
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.