Apache-2.2

為什麼返回 apache 一個 http 500 但不記錄任何錯誤?

  • August 11, 2020

在 12 年的(網路)伺服器上仍然託管 1 個舊的(自定義)PHP 應用程序。我們要關閉此伺服器並將其從機架中移除。不幸的是,我們仍然需要該應用程序,不再積極使用,但需要可用於存檔目的。該應用程序不支持比 v5.2 更新的 PHP 版本。出於這個原因,我想將應用程序託管在 docker 容器中(https://hub.docker.com/r/kuborgh/php-5.2/dockerfile

我啟動了容器,該容器docker run --publish 9090:80 --name xxproject -v /var/docker_mounts/xxproject:/project e28e8b71a1f7將我的應用程序文件夾(xxproject)安裝在主機上/project,即容器中的文件夾。當我index.html在主機上的 xxproject 文件夾中添加一個並瀏覽到 ip:9090 時,我看到了預期的內容。

當我index.htmlindex.php文件(內容:)交換時,Hello world我得到了http 500響應。

當我檢查 apache 錯誤日誌(在容器中:)時,docker exec -it xxproject bash我沒有得到任何條目。日誌有效,因為我在進入網站時可以看到一個調試條目。

/etc/apache2/sites-enabled/000-project.confLogLevel debug在容器中添加用於測試目的):

<VirtualHost *:80>
   ServerAdmin webmaster@localhost

   DocumentRoot /project
   <Directory /project>
       Options FollowSymLinks
       AllowOverride All
       Order allow,deny
       allow from all
   </Directory>
   LogLevel debug
</VirtualHost>

中唯一的日誌條目/var/log/apache2/error.log

[Thu Aug 06 06:47:00 2020] [debug] mod_deflate.c(700): [client 10.128.10.41] Zlib: Compressed 0 to 2 : URL /index.php
[Thu Aug 06 06:47:01 2020] [debug] mod_deflate.c(700): [client 10.128.10.41] Zlib: Compressed 0 to 2 : URL /index.php

我在/var/log/apache2/other_vhost_names.log

172.17.0.3:80 10.128.10.41 - - [06/Aug/2020:06:47:00 +0000] "GET / HTTP/1.1" 500 375 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"
172.17.0.3:80 10.128.10.41 - - [06/Aug/2020:06:47:01 +0000] "GET / HTTP/1.1" 500 375 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"

當我檢查php -a互動式 php 終端按預期工作時。我怎樣才能進一步調試這個問題?我知道 php 5.2 和 Ubuntu 12 已被棄用,不建議繼續使用它們,但這是題外話!

=====更新 1 =====

apache 中的 PHP 配置(已經為相關的 docker 映像預設設置)。除了上面提到的更改之外,我沒有對 docker 容器進行任何更改。

root@63ca87239042:/etc/apache2# grep -ri -B 2 -A 2 php .
./mods-enabled/dir.conf-<IfModule mod_dir.c>
./mods-enabled/dir.conf-
./mods-enabled/dir.conf:          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
./mods-enabled/dir.conf-
./mods-enabled/dir.conf-</IfModule>
--
./mods-enabled/php5.load:LoadModule php5_module        /usr/lib/apache2/modules/libphp5.so
--
./mods-available/dir.conf-<IfModule mod_dir.c>
./mods-available/dir.conf-
./mods-available/dir.conf:          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
./mods-available/dir.conf-
./mods-available/dir.conf-</IfModule>
--
./mods-available/php5.load:LoadModule php5_module        /usr/lib/apache2/modules/libphp5.so
--
./sites-available/default-ssl-  #     directives are used in per-directory context.
./sites-available/default-ssl-  #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
./sites-available/default-ssl:  <FilesMatch "\.(cgi|shtml|phtml|php)$">
./sites-available/default-ssl-          SSLOptions +StdEnvVars
./sites-available/default-ssl-  </FilesMatch>

也許 Apache 不知道何時使用 php 模組?我找到了這個apache cwiki

AddHandler application/x-httpd-php .php .phtml
Action application/x-httpd-php modules/libphp5.so

這就是我啟動容器的方式:

docker run --publish 9090:80  -v /tmp/project:/project kuborgh/php-5.2

/tmp/project 是世界可讀、可寫和可搜尋的,當我訪問 http://localhost:9090/ 時,我放入其中的第一個 index.php 已成功執行。

當我像你一樣嘗試使用 docker id 進行“docker run”時,

docker run --publish 9090:80 --name xxproject -v /var/docker_mounts/xxproject:/project e28e8b71a1f7

我收到一個錯誤,說找不到圖像 e28e8b71a1f7。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
bddc43202735        kuborgh/php-5.2     "/usr/sbin/apache2ct…"   18 hours ago        Exited (137) 16 hours ago                       eager_ride
$ docker run --publish 9090:80  --name AmehoelA -v /tmp/project:/project bddc43202735
Unable to find image 'bddc43202735:latest' locally
docker: Error response from daemon: pull access denied for bddc43202735, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.

引用自:https://serverfault.com/questions/1029075