Tôi chạy vào prob này lem khi tôi cài đặt apache từ nguồn, nhưng sau đó đã cố gắng chạy
$ sudo /etc/init.d/httpd restart
đang sử dụng phiên bản apache được cài đặt sẵn. Chỉ thị dừng trong /etc/init.d/httpd không xóa tệp httpd.pid đã được tạo khi bắt đầu phiên bản apache nguồn được cài đặt.
Để xác định xem đây cũng là lý do cho vấn đề của bạn, tìm nơi tệp httpd.pid đang được đặt khi bạn chạy
$ sudo apachectl start
Nếu bạn cài đặt từ mã nguồn và apache2 đang sống trong/usr/local/apache2, sau đó tệp httpd.pid sẽ được tạo trong/usr/local/apache2/logs. Khi bạn ngừng apache bằng cách chạy
$ sudo apachectl stop
tệp này sẽ bị xóa. Vì vậy, để kiểm tra xem tệp httpd.pid có gây ra sự cố của bạn hay không, hãy bắt đầu apache bằng cách gọi
$ sudo apachectl start
và tìm tệp httpd.pid.Sau đó cố gắng ngăn chặn apache bằng cách sử dụng
$ sudo /etc/init.d/httpd stop
Nếu file httpd.pid gốc vẫn còn hiện diện, thì đó là lý do tại sao apache là không thể khởi động khi bạn sử dụng
$ sudo /etc/init.d/httpd start
Để có được của tôi/etc/init .d/httpd tập tin để làm việc một cách chính xác, tôi dứt khoát đưa cuộc gọi đến apachectl trong khởi động và dừng các phương pháp:
#!/bin/bash
# /etc/init.d/httpd
#
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache2/bin/apachectl
httpd=/usr/local/apache2/bin/httpd
pid=/usr/local/apache2/logs/httpd.pid
prog=httpd
RETVAL=0
start() {
echo -n $"Starting $prog: "
$apachectl -k start
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
$apachectl -k stop
RETVAL=$?
echo
}