我试图从netcatphp 文件启动的连接中获取值,但它因以下原因而终止:
localhost [127.0.0.1] 2000 (?) : Connection refused
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但如果我以 apache 用户(www-data)的身份使用 ssh,它会很好地工作。这就是我所做的:
开始一个无限循环,稍微延迟一下提供日期:
$ (while true; do nc -l -p 2000 -c "sleep 5; date"; done)&
Run Code Online (Sandbox Code Playgroud)检查是否正常工作:
$ su www-data
$ nc localhost 2000
Fri Oct 16 21:33:20 COT 2009
Run Code Online (Sandbox Code Playgroud)创建/var/www/test.php如下:
<?php
exec('nc localhost 2000>>/var/www/dates.txt 2>>/var/www/errors.txt &');
?>
Run Code Online (Sandbox Code Playgroud)在浏览器上运行它:
http://myserver.com/test.php
Run Code Online (Sandbox Code Playgroud)最后看一下两个 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) 我遇到了一个有趣的问题。我们有一个 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 …
我们正在配置一个新服务器,并在 (php7 / opcache) 和 (php5.6 / xcache) 之间做出决定。
我们运营着一些庞大的电子商务网站,并希望获得最佳性能。
我正在寻找两者之间的比较结果,但在任何地方都找不到。
有没有人有两个并排的经验?
我在 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) 我有一个带有 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土地有类似的技术吗?
我们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-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 工作人员都在同一个池中工作。
问题: …
我在一些 ubuntu 服务器配置中,发现我在服务器上的内存(网上资源说默认通常是 128Mb 正确?)
我发现这个列表
memory_limit = -1
Run Code Online (Sandbox Code Playgroud)
为什么?-1 的值有什么作用?Php 5.6
任何人都对 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) IIS 网站通过应用程序池运行,该应用程序池的身份高级属性设置为 ApplicationPoolIdentity。该网站通过 FastCGI 处理程序运行 PHP 脚本。这些脚本尝试写入文件,但即使应用程序池用户具有足够的权限,访问也会被拒绝。我运行了 ProcMon,它显示脚本正在尝试使用 IUSR 而不是应用程序池用户打开文件。
当我打开脚本网址时,我得到
PHP Warning: fopen(C:\ABC\test.txt): failed to open stream: Permission denied
当我运行 Sysinternal 的 ProcMon 时,我看到:
如何修复它以便使用 example.com 用户访问该文件?