标签: php

描述 `strace` 命令输出

我有 php 进程无法完成超过 2 天。

root     26511  0.0  1.6 407788 27684 ?        Ss   Jul09   0:08 /usr/bin/php action.php
Run Code Online (Sandbox Code Playgroud)

这是 strace 命令的输出:

poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5533745, 664851437}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533745, 664940247}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533745, 665211013}) = 0
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout)
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout)
clock_gettime(CLOCK_MONOTONIC, {5533746, 666594416}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533746, 666684149}) = 0
clock_gettime(CLOCK_MONOTONIC, {5533746, 666772214}) = 0
poll([{fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], …
Run Code Online (Sandbox Code Playgroud)

linux php debugging

4
推荐指数
1
解决办法
9565
查看次数

PHP启动:无法加载动态库'/usr/lib/php5/20100525/apc.so'

我已将我的 php 从 5.3.3 更新到 5.4.31。我有一个 Debian 6 Squeeze。

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/apc.so' - /usr/lib/php5/20100525/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/suhosin.so' - /usr/lib/php5/20100525/suhosin.so: cannot open shared object file: No such file or directory in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

在安装过程中,系统询问我是要保留实际的 php.ini 还是放新的。我说保留实际的。

现在,当我重新启动 Apache 时,我遇到了这 2 个错误。

我应该怎么做才能解决它们?

php debian php5 php.ini debian-squeeze

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

CentOS 7 上没有可用的软件包 php-imap

我正在使用 CentOS 7 64 位运行专用服务器,这是尝试安装 IMAP 时的输出:

yum install php-imap  
Loaded plugins: fastestmirror  
Loading mirror speeds from cached hostfile  
 * base: ftp.ciril.fr  
 * extras: ftp.ciril.fr  
 * updates: ftp.ciril.fr  
No package php-imap available.  
Error: Nothing to do    
Run Code Online (Sandbox Code Playgroud)

禁用排除项时也一样:

sudo yum install --disableexcludes=all php-imap
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.ciril.fr
 * extras: ftp.ciril.fr
 * updates: ftp.ciril.fr
No package php-imap available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)

php centos7

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

多个版本的 PHP 通过 nginx

编辑:以供将来参考

我正在使用 PHP 5.5.12 运行带有 LEMP 堆栈的 Ubuntu 14.10。我有许多需要 PHP 5.3.3 的旧版 WordPress 站点以及一些使用相当新版本的 PHP 的 WP 站点,它们都在我本地机器上的 nginx上运行。

我的手被虚拟机和沙箱束缚了,我只能玩 nginx,因此这个问题。我了解人们的安全问题,但我需要这些网站在本地运行,以便我可以在将它们更新到最新的 PHP/WP 版本时测试损坏的功能。

我想让 nginx 根据 WordPress 站点运行正确版本的 PHP(使用 php-fpm)。根据另一个SF 问题,实现此目的的一种方法是让不同的 PHP 版本在不同的端口/套接字上运行,并配置 nginx 服务器块以使用相应的端口/套接字。

我已经手动编译了 PHP 5.3.3 以包含 php-fpm 但这是我得到的最远的。

实际上,我希望有人更详细地解释这个答案。我不太清楚如何“在不同的端口(或套接字)上运行每个版本的 php-fpm”或“在 nginx 服务器块的 fastcgi_pass 参数中配置适当的端口”。

我的一个服务器块看起来像这样以供参考

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

    root /usr/share/nginx/html/testsite1;
    index …
Run Code Online (Sandbox Code Playgroud)

php nginx php-fpm

4
推荐指数
2
解决办法
3万
查看次数

Roundcube + Dovecot:尝试登录时出现 SSL 错误

我正在使用 Dovecot 2.2.13、Postfix 2.11.3 和 Roundcube 1.1.1 连接到它来设置邮件服务器。Roundcube 在 nginx/php-fpm 中的不同服务器上运行。两台服务器都运行带有最新更新的 Debian Jessie,并且可以互相 ping 通。来自 Roundcube 主机的 nmap 显示端口 993 已打开并可访问。此外,我似乎在正确的端口上建立了连接,但似乎无法让 Roundcube 成功连接到 Dovecot。

Dovecot 配置了在端口 993 上运行的以下 SSL 设置:

/etc/dovecot/conf.d/10-ssl.conf

ssl_protocols = TLSv1.2 TLSv1.1 TLSv1 !SSLv2 !SSLv3
ssl_cipher_list = ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES128:DH+AES:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
Run Code Online (Sandbox Code Playgroud)

/etc/dovecot/dovecot.conf

auth_verbose=yes
auth_debug=yes
auth_debug_passwords=yes
mail_debug=yes
verbose_ssl=yes
auth_verbose_passwords=plain
Run Code Online (Sandbox Code Playgroud)

通过这些设置,我能够从 Android 邮件应用程序获得 TLS 连接并接收邮件,因此我知道 Dovecot 正在侦听并能够进行通信。Roundcube 托管在与 Dovecot 不同的服务器上,并使用以下关于 IMAPS 的设置进行配置。

$config['default_host'] = 'tls://mail.domain.tld';
$config['imap_conn_options'] => array(
    'ssl' => array(
        'ciphers' => 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES128:DH+AES:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5',
    ),
);
Run Code Online (Sandbox Code Playgroud)

成功登录在mail.log 中看起来像这样:

dovecot: imap-login: …
Run Code Online (Sandbox Code Playgroud)

php ssl imap roundcube

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

阻止 POST 请求会阻止远程访问木马的传播吗?

我喜欢首字母缩略词 RAT(远程访问木马),因为它类似于您需要从厨房中清除的另一种类型的东西,并且因为当您清除一个并找到它造成的洞并修复洞并设置陷阱和把你的时间投入到老鼠的思想中,你仍然无法真正摆脱一切,直到你用混凝土重建你的房子。

在 .htaccess 中,处理受感染服务器的拟议临时措施可能是:

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !123.456.789.000
RewriteRule .* /nopost.html [R=301,L]
Run Code Online (Sandbox Code Playgroud)

有些老鼠会在你的厨房里拉屎,有些老鼠会帮助其他老鼠,还有一些会偷你的食物。

鉴于 access.log 显示在这些注入的 base64 编码文件上发生了大量 POST 请求,假设上述阻止 POST 请求将解决这些害虫进一步繁殖的问题是否正确,更不用说它们将不被允许同时在厨房地板上发布便便?

或者它只会阻止老鼠的存款?

linux php malware

4
推荐指数
1
解决办法
300
查看次数

带有 PHP 5.6 的 IIS 8:WinCache VS Zend Op Cache

Zend Op Cache在 PHP5.5+ 上默认编译,但 IIS 鼓励使用 WinCache进行操作码缓存。

什么扩展可以让我在 IIS 上获得最佳性能和稳定性?

有基准、案例研究吗?

iis php opcache

4
推荐指数
1
解决办法
1887
查看次数

带有 systemd 的 PHP 脚本

我是 systemd 的新手,我的同事给我的脚本有问题。该脚本在 Debian 7 中作为后台进程运行,但在 Debian 8 中不起作用。我决定将其重写为 systemd。

我有这个chunk8.service(位于/etc/systemd/system):

[Unit]
Description=Chunk-search Daemon
Requires=mysql.service apache2.service

[Service]
PIDFile=/var/run/chunkrm8.pid
ExecStart=/usr/bin/php /var/www/chunkrm8/task_pool.php > /dev/null 2>/dev/null
Type=forking
KillMode=process

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

当我重新启动系统(或运行systemctl start chunk8.service)时,我得到:

? chunk8.service - Chunk-search Daemon
   Loaded: loaded (/etc/systemd/system/chunk8.service; enabled)
   Active: failed (Result: timeout) since Tue 2016-04-19 16:21:20 MSK; 1min 1s ago
Run Code Online (Sandbox Code Playgroud)

我做错了什么?提前致谢。

php daemon systemd

4
推荐指数
1
解决办法
7342
查看次数

允许 PHP 使用 root 权限运行特定的 bash 脚本

我有一个调用 bash 脚本的 php 脚本,如下所示:

<?php
    $result = exec('sudo /bin/bash /var/www/my_bash_script.sh /var/www/vhosts/testsite/htdocs/');
    var_dump($result);
?>
Run Code Online (Sandbox Code Playgroud)

这是内容my_bash_script.sh:

#!/bin/bash
svn export --force --no-auth-cache --username myusername --password mypassword http://1.2.3.4/repos/path/to/repo/ $1 2>&1
find $1 -print0 -type d | xargs -0 -n 1 -0 chown -R -v root:root 2>&1
find $1'storage' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1
find $1'shared' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1
Run Code Online (Sandbox Code Playgroud)

该脚本的目的是从我的 svn repo 导出并正确设置用户权限。

PHP …

php permissions bash sudo user-permissions

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

POST 请求出现 405(不允许)

在 Winginx 出现问题之前,一切正常。当我使用 POST 方法使用 Jquery 发送数据时,出现 405(不允许)错误。GET 工作得很好。

当我从 /formcheck(它是 forcmcheck.php 并且可以正常工作)请求数据时,我收到此错误。除了重写引擎的几行之外,我没有更改 Nginx 日志中的任何内容。

你可以看到日志:

127.0.0.1 - - [07/Jun/2017:15:14:06 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
127.0.0.1 - - [07/Jun/2017:15:16:35 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
127.0.0.1 - - [07/Jun/2017:15:17:32 +0300] "POST /formcheck HTTP/1.1" 405 575 "http://music-portfolio.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 …
Run Code Online (Sandbox Code Playgroud)

php nginx

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