2011-07-20 26 views
6

Đặc biệt tôi cần biết ErrorLog Cài đặt cấu hình Apache từ tập lệnh PHP để hiển thị các lỗi nghiêm trọng mới nhất.Nhận cấu hình Apache từ tập lệnh PHP

PHP có thể có được cài đặt như vậy hoặc tôi cần phải vượt qua đường dẫn đăng nhập theo cách thủ công không?

Trả lời

2

Theo như tôi biết, Apache sẽ không tiết lộ thông tin đó để PHP, thậm chí nếu nó chạy như module Apache. Bạn có hai khả năng:

  • Nếu bạn kiểm soát máy chủ, bạn có thể bật module mod_info Apache. Nó tạo ra một trang HTML trông giống như sau:

    In file: C:/Archivos de programa/Apache Software Foundation/Apache2.2/conf/sitios.d/foo.conf 
        4: <VirtualHost *:80> 
        5: ServerName foo 
        7: DocumentRoot "C:/Sites/Foo/htdocs" 
        9: ErrorLog logs/foo-error.log 
        12: <Directory "C:/Sites/Foo/htdocs"> 
        13:  AllowOverride All 
        14:  Options Indexes FollowSymLinks 
        : </Directory> 
        : </VirtualHost> 
    

    Tất nhiên, nếu bạn kiểm soát máy chủ, bạn có thể tự mình kiểm tra các tập tin *.conf.

  • Bạn luôn có thể định cấu hình PHP để gửi lỗi đến một vị trí đã biết (tôi cho rằng đây là cách tiếp cận phổ biến nhất). Bạn có thể sử dụng các chỉ thị PHP error_loglog_errors PHP.

0
<?php 
phpinfo(); 
?> 

này sẽ cung cấp cho bạn tất cả các phần của cấu hình php

Tôi không chắc chắn bạn có thể nhận được cấu hình apache dù

+0

Không tìm thấy đường dẫn nhật ký Apache. Nếu PHP sẽ được cấu hình để viết các bản ghi bên trong nhật ký riêng của nó, thì nó sẽ đơn giản. – Gedrox

+0

Tôi đã nhận được APACHE_LOG_DIR \t/var/log/apache2 – genesis

+0

Cảm ơn, nhưng vẫn chưa đủ. Bạn có thể đặt bất kỳ tệp nào bằng cách sử dụng chỉ thị ErrorLog. – Gedrox

3

PHP không có một built-in lệnh để định vị các bản ghi lỗi apache . Là một thay thế, bạn có thể làm một cái gì đó như thế này trong cấu hình apache.

ErrorLog /var/log/apache/error_log 
SetEnv APACHE_ERROR_LOG /var/log/apache/error_log 
PassEnv APACHE_ERROR_LOG 

Trong tập lệnh PHP $ _SERVER ['APACHE_ERROR_LOG'] phải là những gì bạn đang yêu cầu.

+0

Giải pháp thú vị. Cảm ơn bạn. – Gedrox

+0

Nhưng khi tôi thử dòng 'PassEnv APACHE_ERROR_LOG', biến PassEnv APACHE_ERROR_LOG không được xác định – Sahal

+0

chỉ cần thiết lập SetEnv làm việc, không cần PassEnv vì nó đưa ra cảnh báo khi tải lại apache http://davetayls.me/blog/2012/01/04/ set-custom-environment-variables-apache-php/ –

3

Để nhận cấu hình Apache Bạn có thể thiết lập mô-đun mod_info. Nhìn vào this. Bạn nhận cấu hình Apache tại liên kết: http://localhost/server-info. Here ví dụ trực tiếp.

<Location /server-info> 
    SetHandler server-info 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Location> 

Để có được thông tin này trong php Bạn có thể sử dụng:

<?php 
    echo(file_get_contents('http://localhost/server-info')); 
?> 
+0

Cảm ơn bạn, đây là cách tiếp cận duy nhất cho vấn đề này. – Gedrox

Các vấn đề liên quan