标签: php

本地主机上的 Netcat“连接被拒绝”

我试图从netcatphp 文件启动的连接中获取值,但它因以下原因而终止:

localhost [127.0.0.1] 2000 (?) : Connection refused
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但如果我以 apache 用户(www-data)的身份使用 ssh,它会很好地工作。这就是我所做的:

  1. 开始一个无限循环,稍微延迟一下提供日期:

    $ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查是否正常工作:

    $ su www-data
    $ nc localhost 2000
    Fri Oct 16 21:33:20 COT 2009
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建/var/www/test.php如下:

    <?php
    exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
    ?>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在浏览器上运行它:

    http://myserver.com/test.php
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后看一下两个 txt,日期为空(与 #2 中的响应完全不同),并且错误有“连接被拒绝”错误。

该服务器是一个运行 Ubuntu Server 9.04 的 LAMP 集群,带有 DRBD 和 Heartbeat。

让我发疯的是,这个 test.php 在我的笔记本电脑(Ubuntu Desktop 9.04 上的 LAMP)上运行良好,并且服务器似乎已经打开并监听端口:

$ netstat -ntpl
Active Internet connections …
Run Code Online (Sandbox Code Playgroud)

linux php port netcat apache-2.2

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

无法使用内置 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万
查看次数

nginx php-fpm 子进程退出,代码为 0

任何人都对 php-fpm 7 和 11.0-RELEASE-p8 有类似的问题,或者知道如何调试它?

几分钟后情况开始,只向客户显示半页。任何页面都显示约 62kb 的内容并带有结尾????????? 4.

php-fpm 的日志文件:

[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80582 exited with code 0 after 0.005648 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80584 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80583 exited with code 0 after 0.005877 seconds from start
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80585 started
[18-Mar-2017 15:41:49] NOTICE: [pool www] child 80581 exited with code 0 after 0.007763 seconds from start
[18-Mar-2017 15:41:49] NOTICE: …
Run Code Online (Sandbox Code Playgroud)

freebsd php nginx php-fpm php7

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

PHP FastCgi 作为 IUSR 而不是 IIS APPPOOL/xxx 运行

IIS 网站通过应用程序池运行,该应用程序池的身份高级属性设置为 ApplicationPoolIdentity。该网站通过 FastCGI 处理程序运行 PHP 脚本。这些脚本尝试写入文件,但即使应用程序池用户具有足够的权限,访问也会被拒绝。我运行了 ProcMon,它显示脚本正在尝试使用 IUSR 而不是应用程序池用户打开文件。

  • 网站example.com
    • 基本设置 - 应用程序池 = example.com
    • 基本设置 - 连接身份 = 应用程序用户(直通身份验证)
  • 应用程序池example.com
    • 高级设置 - 流程模型 - 身份 - ApplicationPoolIdentity
  • 脚本尝试写入文件
    • C:\ABC\test.txt
  • 目录 C:\ABC 有权限
    • IIS APPPOOL\example.com - 完全控制、类型允许、适用于此文件夹、子文件夹和文件

当我打开脚本网址时,我得到 PHP Warning: fopen(C:\ABC\test.txt): failed to open stream: Permission denied

当我运行 Sysinternal 的 ProcMon 时,我看到:

  • 事件
    • 操作创建文件
    • 结果访问被拒绝
    • 路径 C:\ABC
    • 所需访问权限:读取数据/列表目录、同步
    • 共享模式:读、写、删除
    • 冒充:NT AUTHORITY\IUSR
  • 过程
    • 路径 ...\php-cgi.exe
    • 用户:IIS APPPOOL\example.com

如何修复它以便使用 example.com 用户访问该文件?

iis php permissions

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