Scenario: Bazı PHP ile bir Apache web sunucusu üzerinde çalışıyorum. I https://example.mysite.com/test.php O benim tarayıcı işaret içinde kod aşağıdaki satırları var:
<pre>
<?php
print_r($_SERVER);
?>
</pre>
SERVER_PORT için dışarı basılmış değeri 80, değil 443. I https://example.mysite.com:80/test.php web sunucusu (Apache) Barfs (bir hata example.mysite.com bir bağlantı sırasında meydana gitmek Ama eğer:. 80. SSL izin verilen uzunluğu aşan bir kayıt aldı Hata kodu:. SSL_ERROR_RX_RECORD_TOO_LONG .) I https://example.mysite.com:443/test.php giderseniz sonra URL dışında hiçbir hata veya sorunları ile https://example.mysite.com/test.php yönlendirir ki sunucu portu 80 yerine 443 olduğunu benim PHP yazdırır.
İşte conf.d/ssl.conf dosyadan ilgili bölümü (Ben yabancı direktifler dışında inandığımız çıkarılır ve kelime IP_ADDRESS ile gerçek IP adresini değiştirilir) bulunuyor:
Listen IP_ADDRESS:443
<VirtualHost *:443>
ServerName example.mysite.com
ServerAlias example
DocumentRoot "/path/to/document_root/htdocs"
Options +Indexes
</VirtualHost>
Burada $ _SERVER dışarı tam baskı (benim sunucu ayrıntıları redacted ile / anonim örneklerle değiştirildi) değişken:
Array
(
[HTTP_HOST] => example.mysite.com
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 115
[HTTP_CONNECTION] => keep-alive
[HTTP_COOKIE] => PHPSESSID=randomstring_yes_I'm_that_paranoid
[PATH] => /sbin:/usr/sbin:/bin:/usr/bin
[SERVER_SIGNATURE] =>
Apache/2.2.3 (Red Hat) Server at example.mysite.com Port 80
[SERVER_SOFTWARE] => Apache/2.2.3 (Red Hat)
[SERVER_NAME] => example.mysite.com
[SERVER_ADDR] => IP_ADDRESS_1
[SERVER_PORT] => 80
[REMOTE_ADDR] => IP_ADDRESS_2
[DOCUMENT_ROOT] => /path/to/document_root/htdocs
[SERVER_ADMIN] => admin@mysite.com
[SCRIPT_FILENAME] => /path/to/document_root/htdocs/test.php
[REMOTE_PORT] => 49178
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /test.php
[SCRIPT_NAME] => /test.php
[PHP_SELF] => /test.php
[REQUEST_TIME] => 1292273758
)
Gördüğünüz gibi, SERVER_PORT 80 ve $ _SERVER ['HTTPS'] ayarlı değil. PHP komut dosyası HTTPS üzerinden erişilen eğer PHP Docs göre, (Ben ne yapıyorum ki) o boş olmayan bir değere ayarlanması gerekiyordu düşündüm.
Herhangi bir fikir ne oluyor? Ben sadece web geliştirici değilim - Ben bu sunucuyu yönetmek değil ama benim server admin her şey çalışıyor bana söyler ama ben HTTPS URL görüntülerken $ _SERVER ['SERVER_PORT'] yerine 443 80 dönen neden bilmek istiyorum.
EDIT: Ben tüm $ _SERVER değişkeni dışarı baskı benim sonuçlar göstermek için yukarıdaki örneği düzenlenebilir ettik.
Aşağıdaki açıklamalarda önerilen EDIT 2: çalışılıyor https://example.mysite.com:443/test.php aynı şeyi yapar - SERVER_PORT 80 ve HTTPS ayarlı değil (özellikle bu URL'yi çalışıyor yönlendirir https://example.mysite.com/test.php) .
Bu IP adresini kullanarak yerine daha VirtualHost bölümü içinde SSL direktifleri hareketli ve benim siteyi referans olduğunu yönergesini değiştirerek: DR; EDIT 3: Tamam, ben ne inanıyorum TL (aşağıda bu cevap gönderdiniz joker) sorunu çözmüş görünüyor.