标签: php

如何检查 PHP 是否是使用 Win32 API 的 UNICODE 版本编译的?

这与这篇 Stack Overflow 帖子有关:

glob() 在 Windows 上找不到多字节字符的文件名?

我在使用 PHP 和 Windows 上具有多字节字符的文件时遇到问题。这是我的测试用例:

print_r(scandir('./uploads/')); 
print_r(glob('./uploads/*'));
Run Code Online (Sandbox Code Playgroud)

远程 UNIX 服务器上的正确输出:

Array
(
    [0] => .
    [1] => ..
    [2] => filename-äöü.jpg
    [3] => filename.jpg
    [4] => test?test.jpg
    [5] => ??? ?????.jpg
    [6] => ?????????.jpg
    [7] => ???.jpg
)
Array
(
    [0] => ./uploads/filename-äöü.jpg
    [1] => ./uploads/filename.jpg
    [2] => ./uploads/test?test.jpg
    [3] => ./uploads/??? ?????.jpg
    [4] => ./uploads/?????????.jpg
    [5] => ./uploads/???.jpg
)
Run Code Online (Sandbox Code Playgroud)

Windows 本地输出不正确

Array
(
    [0] => .
    [1] …
Run Code Online (Sandbox Code Playgroud)

windows php unicode apache-2.2

10
推荐指数
1
解决办法
2651
查看次数

mysql_connect():服务器请求客户端未知的身份验证方法[mysql_old_password]

我正在尝试运行 PHP 5.4.1(从源代码编译)但是当我尝试在 mysql 上连接时,我得到:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in
Run Code Online (Sandbox Code Playgroud)

当使用 PHP 5.3/5.2 时,它可以正常工作。关于导致此问题的原因的任何想法?

php

10
推荐指数
2
解决办法
9万
查看次数

我们如何动态限制每个用户的 nginx 上传/下载速度?

可以使用特定位置的速率限制来限制速度。

但是,我们如何动态地做到这一点?

假设您有付费用户与非付费用户,并且您想为付费用户提供更高的带宽。

我们需要动态地检查数据库并为这个特定的用户组提供一定的速度。

你有什么 nginx 模块吗?

php nginx bandwidth-control

10
推荐指数
1
解决办法
5009
查看次数

如何在 CentOS 6.3 上将 PHP 升级到 5.4.10

# cat /etc/redhat-release
  CentOS release 6.3 (Final)

# php -v
  PHP 5.3.3

# yum update php
  No Packages marked for Update
Run Code Online (Sandbox Code Playgroud)

如何升级到最新版本的PHP 5.4.10(当前稳定)

php centos

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

仅允许在指定的虚拟主机上访问 PhpMyadmin

我正在处理多虚拟主机环境。我已经为 Mysql 远程控制安装了 PhpMyadmin。

环境配置如下:

one.domain.com
two.domain.com
onlyphpmyadmin.domain.com
Run Code Online (Sandbox Code Playgroud)

现在,如果我访问三个域之一

http://one.domain.com/phpmyadmin/
http://two.domein.com/phpmyadmin/
http://onlyphpmyadmin.domain.com/phpmyadmin/
Run Code Online (Sandbox Code Playgroud)

结果是一样的,允许访问phpmyadmin。

目标是获得如下所示的情况

http://one.domain.com/phpmyadmin/ --> access denied
http://two.domein.com/phpmyadmin/ --> access denied 
http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed
Run Code Online (Sandbox Code Playgroud)

没有类似于

<?php 
if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com')
die('access denied');

 ...
 ?>
Run Code Online (Sandbox Code Playgroud)

在一些 phpmyadmin 文件上。


这是我的 phpmyadmin 配置文件

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_admin_flag allow_url_fopen Off
        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
    </IfModule>

</Directory>

# Authorize for …
Run Code Online (Sandbox Code Playgroud)

php virtualhost apache-2.2

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

nginx,别名,php-fpm = 文件未找到

我正在尝试使用 DAViCal 设置 nginx。但是,我在日志中收到一个“文件未找到”,其中包含“FastCGI sent in stderr:”Primary script unknown”。看起来我的别名有问题,但我确实想不通。

我的虚拟主机:

server {
listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

root /var/www-data;
index index.html index.htm index.shtml index.php;

# Make site accessible from http://localhost/
server_name just.a.server;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.html;
    ssi on;
    # Uncomment to enable naxsi …
Run Code Online (Sandbox Code Playgroud)

php nginx alias fastcgi php-fpm

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

使用 Internet Explorer 为长时间运行的数据 API 调用 PHP/CURL 导致 Apache 2 服务器冻结并需要重新启动

我正在运行一个 PHP 程序,只要它不被 Microsoft Internet Explorer 浏览器调用,它就可以正常工作,之后它会生成以下进程,锁定 Apache 2 并需要重新启动 Web 服务器(在 Ubuntu 12.04 LTS 上)。

bob@drools:/etc/php5/apache2# ps auxwww | grep apache2
root      8737  0.1  2.5 369164 25800 ?        Ssl  12:41   0:00 /usr/sbin/apache2 -k start
www-data  8743  0.0  3.2 393748 33268 ?        Sl   12:41   0:00 /usr/sbin/apache2 -k start
www-data  8755  0.1  3.3 393856 33904 ?        Sl   12:41   0:00 /usr/sbin/apache2 -k start
www-data  8779  0.1  3.2 393724 33252 ?        Sl   12:45   0:00 /usr/sbin/apache2 -k start
www-data  8782  0.1  3.2 393716 33236 …
Run Code Online (Sandbox Code Playgroud)

php internet-explorer curl apache-2.2

10
推荐指数
1
解决办法
850
查看次数

Roundcube 和 Postfix SMTP:SSL 例程:SSL3_READ_BYTES:tlsv1 警报未知 ca:s3_pkt.c

我有一个 Postfix / Dovecot / Roundcube 设置,我个人使用,也提供给其他用户。我试图将整个设置转移到一个新的盒子,但有一些问题。

邮件接收工作正常(仅在内部测试,域尚未传输。)以及使用 TLS/SSL 的外部 IMAP 和 SMTP 工作正常(例如,Thunderbird)

问题出在我的圆形立方体设置上,它可以使用 IMAP 到 127.0.0.1,并且可以很好地显示用户的电子邮件,但无法发送电子邮件,只需声明: "SMTP Error (220): Authentication failed."

奇怪的是,使用我在当前服务器上使用的相同 Postfix/Dovecot 配置,Roundcube 无法再在我的新服务器上访问它。这是相关的圆形立方体配置:

$config['smtp_server'] = 'tls://localhost';

// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;

// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;

// SMTP username (if required) if you use %u as the username Roundcube
// …
Run Code Online (Sandbox Code Playgroud)

php smtp postfix openssl roundcube

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

如何在wordpress中创建一个返回代码200的url?

这是必需的,因为我需要在 GCP 中为 wordpress 实例实现负载均衡器。

如果通过健康测试,GCP 只会将请求转发给 wordpress 实例。

这是健康检查屏幕的典型定义

在此处输入图片说明

它期望“请求路径”返回 200。否则目标系统将被视为关闭。

但是,如果我在 wordpress 中创建一个页面,例如/index.php/newpage,它将始终返回 301。

当 wordpress 站点启动并运行时,它未通过健康检查。

有什么办法可以在wordpress中定义一个返回200的页面?希望它不需要额外的插件,因为我想避免维护额外的插件。

对我来说最后的办法是向 php 服务器添加一个 url,它将返回 200。但是,这个 url 的状态可能不是 100% 反映 wordpress 站点的健康状况(例如,可能由于 mysql 问题而关闭)。如果确实是不得已而为之,那么实施它的最佳方法是什么?我不精通php开发。

wordpress的版本是4.6.2

php wordpress google-cloud-platform

10
推荐指数
2
解决办法
7065
查看次数

如何强行彻底清除PHP7 opcache?

我的网络服务器上的 opcache 一直达到我设置的限制,即使我觉得我没有那么多 PHP 代码,它真的应该有足够的空间。

更糟糕的是,即使在清除 opcache 时,它​​也会立即显示超过 2/3 的可用空间已被填充。

刚才的例子:

运行 opcache_reset() 之前的 phpinfo 片段:

Used memory     122958472
Free memory     5552 
Run Code Online (Sandbox Code Playgroud)

运行 opcache_reset() 后的 phpinfo 片段:

Used memory     90691312
Free memory     43526416
Run Code Online (Sandbox Code Playgroud)

我知道在 PHP7 中,opcache(显然)备份到磁盘,所以也许东西正在自动重新加载?但这似乎违背了重置 opcache 的目的,我不知道 opcache 备份到磁盘上的哪个位置,所以我无法检查。

我正在 nginx 上运行 PHP-FPM,准确地说是 vesion 7.0.15-0ubuntu0.16.04.4。

php php-fpm opcache php7

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