标签: php

如何在 Windows Server 2008 上升级到 PHP 5.5

在 Windows 上从 PHP 版本 5.4.32 升级到 PHP 版本 5.5.22 的正确方法是什么?我能找到的只是如何安装。

PHP 已经与 IIS 一起在 Windows Server 2008 R2 64 位上运行,只需要移动到更新版本的 PHP

iis php iis-7 php5

5
推荐指数
1
解决办法
2万
查看次数

Nginx 和不同版本的 PHP FPM + PHP

由于马克和他之前的回答对我希望实现的目标有了更好的理解,我发布了一个(希望)更清晰且略有不同的变化,因为该线程已达到饱和;

我正在尝试在 nginx 服务器上运行多个 WordPress 站点,其中每个站点都需要不同版本的 PHP。我希望通过使用多个版本的 PHP-FPM 来实现这一点,每个版本都运行不同版本的 PHP,与 nginx 分开。

然后我想使用.conf文件来控制每个站点使用的 PHP-FPM 服务器,允许该站点在所需的 PHP 版本上运行。(根据评论区)

目前我的 testsite1 服务器块看起来像这样,运行默认的 PHP 版本。

server {
    listen 80;
    listen [::]:80;

    root /usr/share/nginx/html/testsite1;
    index index.php index.html index.htm;

    server_name local.testsite1.com;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock; …
Run Code Online (Sandbox Code Playgroud)

php nginx php-fpm

5
推荐指数
1
解决办法
8881
查看次数

来自我的服务器的强力攻击

我照顾的其中一台服务器似乎参与了对 Wordpress 安装的暴力攻击。

我已经多次处于这种情况的接收端,因此非常熟悉可以采取哪些步骤来防止这种情况发生。然而,我正在努力解决的是检测传出攻击。该服务器是一个典型的 Apache 服务器,上面有许多虚拟主机——这当然是复杂的地方——如果那里只有一个,那就不会那么困难了!

我目前正在使用 tcpflow 使用以下命令记录从该服务器上的任何端口到任何其他机器上的端口 80 的流量:

tcpflow -i eth0 dst port 80 and src host <my_servers_ip> and port not 22
Run Code Online (Sandbox Code Playgroud)

我发现这比 tcpdump 更可取。过一会儿查看它的输出可能会让人有些费解:) tcpflow 将每个请求放入一个单独的文件中..

这是我认为是可疑活动的文件的一些输出:

POST /wp-login.php HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Host: somedomain.com
Accept: */*
Cookie: wordpress_test_cookie=WP+Cookie+check
Content-Length: 97
Content-Type: application/x-www-form-urlencoded

log=jacklyn&pwd=london&wp-submit=Log+In&redirect_to=http://somedomain.com/wp-admin/tes1a0&testcookie=1
Run Code Online (Sandbox Code Playgroud)

请注意,我已经混淆了上面的“主机:”,我相信这是被攻击的主机(这是正确的吗?)。

所以我的问题真的是,我该如何检测产生这种恶意流量的虚拟主机?如果我能做到这一点,我可以让我的客户知道,他可以采取措施调查该网站并进行必要的更改以阻止它。

非常感谢收到任何解决方案:)

linux php brute-force-attacks

5
推荐指数
1
解决办法
2392
查看次数

无法使用内置 CA 包来验证 GoDaddy SHA2 SSL 证书

我遇到了一个有趣的问题。我们有一个 PHP 脚本可以联系 LTL 托运人 ( https://facts.dohrn.com/ )。该脚本一直失败,因为它无法验证 SSL 证书。我访问了该站点,发现他们使用的是 GoDaddy SHA2 证书(使用GoDaddy 证书捆绑包 - G2,这是用于 SHA2 的)。

我安装了最新版本,ca-certificate看起来他们有Go Daddy Root Certificate Authority - G2但这不是一回事,并且在所有形式的验证中都失败了。我终于能够通过复制包并直接在 CURL 请求中使用它来让它工作。但这只是一种解决方法。是否还有其他我遗漏的东西可以在不直接安装 CA 的情况下完成这项工作?

# openssl s_client -connect fact.dohrn.com:443
CONNECTED(00000003) depth=0 OU = Domain Control Validated, CN = fact.dohrn.com verify
error:num=20:unable to get local issuer certificate verify return:1
depth =0 OU = 域控制验证,CN = fact.dohrn.com 验证
错误:num=27:证书不可信验证返回:1 深度=0 OU =
域控制验证,CN = fact.dohrn.com 验证
错误:num= 21:unable to verify the …

php centos openssl ssl-certificate

5
推荐指数
1
解决办法
4414
查看次数

PHP 7 opcache v php 5.6 xcache

我们正在配置一个新服务器,并在 (php7 / opcache) 和 (php5.6 / xcache) 之间做出决定。

我们运营着一些庞大的电子商务网站,并希望获得最佳性能。

我正在寻找两者之间的比较结果,但在任何地方都找不到。

有没有人有两个并排的经验?

php xcache opcache php7

5
推荐指数
1
解决办法
8113
查看次数

子目录中的 Nginx 和 PHP

我在 nginx 后面有一个应用程序。但我需要此应用程序中的特定路径重定向到 Wordpress 博客

例子 :

example.com/ -------> 重定向到我的应用程序

example.com/whatever/ -------> 也重定向到我的应用程序

example.com/blog/ ------->重定向到我的 Wordpress 博客

所以,我添加了一个匹配这个子路径的位置

server {
        listen 80 default_server;

        index index.php;

        server_name _;

        location ^~ /blog {
                root /path/to/my/blog;
                index index.php index.html;

                location ^~ /blog/(.*\.php)$ {
                   fastcgi_pass   127.0.0.1:9000;
                   fastcgi_index index.php;
                   fastcgi_param  SCRIPT_FILENAME  /path/to/my/blog/$fastcgi_script_name;
                   include fastcgi_params;
                }
        }

        location ~* /(.*) {
                #here the conf for the rest of the website
        }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试获取该页面时,我在日志中有一个带有此错误的 404:

2016/05/22 15:27:24 [error] 21759#0: *1 open() "/path/to/my/blog/blog/index.php" failed (2: No such file …
Run Code Online (Sandbox Code Playgroud)

php nginx php-fpm

5
推荐指数
1
解决办法
2万
查看次数

在生产服务器上调试卡住的 apache/php 线程

我有一个带有 apache httpd 和 PHP 的 linux 系统,它使用LoadModule php5_module /usr/lib/apache2/modules/libphp5.so.

我已经启用了 apache 的 mod_status 模块,我看到一个特定的线程从昨天开始就一直在做某事。我还通过ps -axu | grep apache在许多线程中执行哪个给我特定的卡住线程来确认这一点:

www-data  5636  0.0  0.1 423556 23560 ?      S    XXXXX   0:04 /usr/sbin/apache2 -k start
Run Code Online (Sandbox Code Playgroud)

请注意,XXXXX 类似于昨天的 Jan02。此外,pid (5636) 与我在 apache 的 mod_status 页面中看到的卡住线程的 pid 相匹配。

我的问题是:我怎样才能做一个线程转储或类似的事情来查看这个东西在 PHP 代码中的确切位置?也许它正在等待某些东西(I/O、网络、数据库),但我不知道是什么。

在 Java 世界中,我会做一个kill -3 pid很好的可读线程转储,它会清楚地向我展示该特定线程的确切位置。php土地有类似的技术吗?

php troubleshooting threads dump apache2

5
推荐指数
1
解决办法
4717
查看次数

尽管存在规则并且启用了 mod_headers,但未发送 HSTS 标头

我们httpd.conf在虚拟主机处理端口 443 中启用了 HSTS 。我们尝试使用和不使用<IfModule mod_headers.c>:

<IfModule mod_headers.c>
    Header set Strict-Transport-Security "max-age=10886400; includeSubDomains"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但是服务器在响应中不包含标头。以下是通过 HTTPS 的 curl:

> GET / HTTP/1.1
> Host: www.cryptopp.com
> User-Agent: curl/7.51.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sat, 05 Nov 2016 22:49:25 GMT
< Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips
< Last-Modified: Wed, 02 Nov 2016 01:27:08 GMT
< ETag: "8988-5404756e12afc"
< Accept-Ranges: bytes
< Content-Length: 35208
< Vary: Accept-Encoding
< Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

的相关部分httpd.conf如下所示。cURL …

php centos mediawiki hsts

5
推荐指数
1
解决办法
1130
查看次数

停止使用 PHP-FPM 为不同站点重用 PHP_VALUE

我注意到以下行为或 PHP-FPM:

看看这两个 Nginx 配置:

server {
    listen         80;
    server_name    example.com;
    location / {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /srv/www/i.php;
        fastcgi_param PHP_VALUE "display_errors=1";
        include fastcgi_params;
    }
}
server { 
    listen         80;
    server_name    example.net;
    location / {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /srv/www/i.php;
        include fastcgi_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

和/srv/www/i.php文件:

<?php phpinfo();
Run Code Online (Sandbox Code Playgroud)

如您所见,唯一的区别是fastcgi_param PHP_VALUE "display_errors=1";.

现在,如果你杀死所有FPM工人,并打开example.net第一个,你会看到display_errors的Off预期。在example.com您将看到display_errors的On。

但是,如果你访问example.net再次和这个请求是由同一工作的进行,你会得到display_errors的On。

所有 FPM 工作人员都在同一个池中工作。

问题: …

php nginx php.ini php-fpm

5
推荐指数
1
解决办法
3023
查看次数

memory_limit = -1 在 PHP.ini 文件中是什么意思?

我在一些 ubuntu 服务器配置中,发现我在服务器上的内存(网上资源说默认通常是 128Mb 正确?)

我发现这个列表

memory_limit = -1
Run Code Online (Sandbox Code Playgroud)

为什么?-1 的值有什么作用?Php 5.6

php ubuntu-16.04

5
推荐指数
1
解决办法
2万
查看次数