Прежде всего:
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/
Если вы сопоставляете подстроки, вы всегда должны искать более длинное совпадение, а не более короткое:
if (strpos($dir, "ComputerScience") !== FALSE) {
$sql = "UPDATE documents
SET subject = 'ComputerScience'
WHERE documentname='".$dir."'";
mysqli_query($link,$sql);
} elseif (strpos($dir, "Science") !== FALSE) {
$sql = "UPDATE documents
SET subject = 'Science'
WHERE documentname='".$dir."'";
mysqli_query($link,$sql);
}
Вы можете сократить код, предварительно сохранив совпадения в массиве:
$matches = ['ComputerScience', 'Science'];
foreach ($matches as $match) {
if (strpos($dir, $match) !== FALSE) {
$sql = "UPDATE documents
SET subject = '$match'
WHERE documentname='$dir' ";
mysqli_query($link, $sql);
break;
}
}
Опять же, более длинное совпадение идет первым в массиве. Вы также можете использовать интерполяцию строк для облегчения чтения SQL.
В идеале вы должны добавить разделители каталогов, чтобы избежать этих проблем:
if (strpos($dir, "/ComputerScience/") !== FALSE) {
}
if (strpos($dir, "/Science/") !== FALSE) {
}
Замените /
фактическим разделителем каталогов для вашей файловой системы (\
или /
).
$subject = FALSE !== strpos($dir, "ComputerScience") ? 'ComputerScience' : (FALSE !== strpos($dir, "Science") ? 'Science' : null);
if (null !== $subject) {
$my_full_path= $dir;
$sql = "UPDATE documents
SET subject = '$subject'
WHERE documentname='".$dir."'";
mysqli_query($link,$sql);
}
также было бы хорошо использовать подготовленное заявление. Они указывают на то, что приведенный выше код уменьшает шаблон, потому что вам не нужно писать похожий код с выполнением запросов дважды. То же самое можно сделать с помощью решения @Salman A. Это просто еще один вариант с троичными операторами.