Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Если у вас есть ошибка примерно так:
Cannot load modules/mod_ssl.so into server: The specified module could not be found.
ПРИМЕЧАНИЕ. Я считаю, что это связано с ошибкой в части apache openssl для wamp 3.0.6. К счастью, в папке php7 эти библиотеки DLL совместимы для apache и php5.
@RiggsFolly: некоторые небольшие ошибки / опечатки / дополнения в вашем учебнике. Ниже используется в сочетании с WAMPServer 2.5 64 бит (Apache 2.4.9 и PHP 5.5.12) в Windows 7 SP1 64 бит:
-httpd-vhosts.conf находится в файле extra / httpd-vhosts.conf
- когда вы пытаетесь отредактировать файл ваших хостов, обязательно отключите любой virusscanner. Некоторые из них блокируют доступ к файлу хостов.
- обязательно откройте текстовый редактор как администратор при редактировании файла хостов или получите ошибку, пытающуюся сохранить.
-don ' t забыть удалить # в начале строки хоста, если есть
, если вы используете WAMPServer 64 бит, обязательно загрузите 64-битную версию OpenSSL
- шаг openssl genrsa -out сайт \ server.key 2048 создает файл server.key, а не файл privkey.pem!
-file \ wamp \ bin \ apache \ apachex.yz \ conf \ httpd-ssl.conf находится в \ wamp \ bin \ apache \ apachex.yz \ conf \ extra \ httpd-ssl.conf (возможно, это зависит от версии WAMPServer)
- Мне пришлось использовать разные порты для http (80-> 8080) и https (443-> 444), поскольку эти порты, где используется, я думаю, Skype. Если вы используете разные порты, обязательно используйте их везде, где вы видите 80 или 443 в этом учебнике
- мне также пришлось включить socache_shmcb_module. «Httpd -t» также упомянул об этом.
Необходимо активировать модуль LoadModule socache_shmcb_module modules / mod_socache_shmcb.so в файле httpd.conf в wampserver 2.5. Если не apache выдает следующее сообщение:
AH00526: Синтаксическая ошибка в строке 75 в C: /wamp/bin/apache/apache2.4.9/conf/extra/httpd-ssl.conf: SSLSessionCache: 'shmcb 'кеш сеанса не поддерживается (известные имена:). Возможно, вам нужно загрузить соответствующий модуль socache (mod_socache_shmcb?).
Прежде всего:
1) .Shutdown WAMP и перейдите к C:\wamp\scripts\config.inc.php
, перейдите из массива libeay32.dll
, ssleay32.dll
, строк 133,139
2). Установите OpenSSL из официальный сайт, обратите внимание на версию вашей ОС x64 или нет.
Командная строка:
3). cd C:\wamp\bin\apache\apache2.4.23\bin
4). openssl req -new > localhost.csr
5). openssl rsa -in privkey.pem -out localhost.key
6). openssl x509 -in localhost.csr -out localhost.crt -req -signkey localhost.key -days 365 -sha256 -extfile v3.ext
Обновление: из Chrome 58 нам нужно предоставить Subject Alternative Name
. Это имя мы можем получить из файла расширения v3.ext
:
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = 127.0.0.1
DNS.2 = localhost
Очень важно в Common Name вставить 'localhost'
7) .Grab localhost.key и localhost.crt и установите их в C:\wamp\bin\apache\apache2.4.23\conf\key
(обязательно, прежде чем создать соответствующий каталог)
Конфигурация:
8) .enable в C:\wamp\bin\apache\apache2.4.23\bin\php.ini
и
C:\wamp\bin\php\php5.6.25\php.ini
extension=php_openssl.dll
9). перейти к C:\wamp\bin\apache\apache2.4.23\conf\httpd.conf
и раскомментировать:
LoadModule ssl_module modules/mod_ssl.so
,
Include conf/extra/httpd-ssl.conf
,
Include conf/extra/httpd-vhosts.conf
,
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
10). перейдите к C:\wamp\bin\apache\apache2.4.23\conf\extra\httpd-ssl.conf
и внесите изменения:
SSLSessionCache "shmcb:c:/wamp/bin/apache/apache2.4.23/logs/ssl_scache(512000)"
,
SSLSessionCacheTimeout 300
,
VirtualHost _default_:443
,
DocumentRoot "c:/wamp/www/"
,
ServerName localhost:443
,
ErrorLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_error.log"
, (создать файл, если он не существует)
TransferLog "c:/wamp/bin/apache/apache2.4.23/logs/access.log"
,
SSLCertificateFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.crt"
,
SSLCertificateKeyFile "c:/wamp/bin/apache/apache2.4.23/conf/key/localhost.key"
,
<Directory "c:/wamp/www/">
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
,
CustomLog "c:/wamp/bin/apache/apache2.4.23/logs/ssl_request.log"
Обработка сертификатов:
11). Нажмите Win + R и вставьте 'certmgr.msc', import servercert.crt в «Доверенные корневые сертифицированные органы»
12). Проверьте свой сервер в командной строке: «httpd -t» должен быть «Синтаксис OK»
13). Запустите Wamp и перейдите к ссылке https://localhost
Я надеюсь, что это поможет
Примечание: прочитайте эту статью о поведении Mozilla:
https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/
@RiggsFolly: самоподписанный сертификат с ключом можно легко сгенерировать, например, здесь ... http://www.selfsignedcertificate.com/ , поэтому я мог бы начать учебник с шага 4 ( У меня также был стандарт: 80 виртуальных серверов работает.)
В любом случае некоторые упомянутые вещи уже были включены в настройке по умолчанию WAMP (я думаю, это меняется от версии к версии), но все остальное мне очень помогло. И на самом деле одна вещь отсутствовала ... Мне также пришлось раскомментировать следующую строку в «httpd.conf»
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Если у вас есть ошибка:
Не удается загрузить модули / mod_ssl.so на сервер: операционная система не может запустить% 1
blockquote>. Затем у вас есть to:
- Установить Win32 OpenSSL здесь http://slproweb.com/products/Win32OpenSSL.html
- Скопировать / вставить libeay32.dll, ssleay32.dll в папку wp php bin (C: \ wamp64 \ bin \ php \ php5.6.19)
- Перезапустить apache
Примечание: Протестировано на сервере Wamp 3
libeay32.dll
или ssleay32.dll
внутри каталога openssl
– natanelg97
28 August 2016 в 12:05