标签: php

PHP fastCGI 不会停止,尝试启动 PHP fpm

我安装了 php-fpm 并尝试启动它。得到以下错误:

ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
Run Code Online (Sandbox Code Playgroud)

所以看起来 php-fastcgi 正在使用地址:

[root@singularity ~]# netstat -tulnp | grep ":9000"
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      14595/php-cgi
Run Code Online (Sandbox Code Playgroud)

但我无法停止 php-fastcgi 服务:

[brad@singularity ~]$ sudo /etc/init.d/php-fastcgi stop
Stopping php-cgi:                                          [FAILED]
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?任何想法为什么?或者我可以在哪里查找错误?

php centos fastcgi

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

整整 60 秒后清漆 503 错误...如何更改此超时值?

我在 Drupal 站点上通过 Apache 运行 Varnish。我有一个 PHP 脚本,它在我网站的某个路径上执行,需要很长时间……比如 60 - 120 秒。尝试访问该页面时,Varnish 总是在 60 秒后给我 503 大师冥想超时。

我已经尝试将 Varnish connect_timeout 设置为一个非常高的值......我已经尝试将 Apache 的 php.ini 中的所有超时设置为非常高的值......但没有运气:Varnish 在 60 秒后一直给我 503 错误.

所以这是我的问题:这个 60 秒超时值来自哪里?我在这里拔头发...

(仅供参考:如果我从图片中取出 Varnish,Apache 在 60 - 120 秒后按预期提供页面,这让我认为超时必须在 Varnish 一侧的某个地方......)。

php timeout varnish drupal apache-2.2

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

会话变量在 PHP5/Apache2/Ubuntu12 中不持久

我有一个网站,它使用会话变量(在 PHP 中)来了解访问者是否正在进入网站。如果他是新来的,那么我会将他重定向到检测到的语言。但如果他不是新人,你可以让他去任何他想去的地方(甚至是其他语言的页面)。

问题是用于实现此目的的变量 ($_SESSION["knownvisitor"]) 不是持久的。我在其他服务器上测试了同一个网站,它工作得很好,所以我很确定这是一个会话配置问题。有问题的服务器是带有 Apache 2.2.22 和 PHP 5.3.10 的 Ubuntu Server 12.04.4。

会话存储在“/var/lib/php5”中,我可以在那里看到文件,但它们是空的。会话文件属于“www-data”并具有以下权限“-rw-------”。另一方面,该目录属于“root”并具有“drwx-wx-wt”这些权限。

我尝试在重定向之前使用“session_write_close()”,正如某些论坛中所推荐的那样,但没有成功。重定向类似于“header('Location: [URL]')”。

这是脚本的代码,因此您可以了解其基本行为。这是我放在我的网络中所有文件开头的内容:

function detectedlang($availlangs)
{
 // FUNCTION STUFF HERE TO FIND OUT WHICH IS THE LANGUAGE OF THE VISITOR
 return $detectedlang;
}

session_start();

if (!isset($_SESSION["knownvisitor"]))
{
 $detectedlang = detectedlang(array("en", "es"));
 $_SESSION["knownvisitor"] = true;
 header("Location: http://www.mysite.com/".$detectedlang);
}
Run Code Online (Sandbox Code Playgroud)

ubuntu php php5 session apache-2.2

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

如何在我的共享 cPanel 网络主机上安装 phalcon(或任何自定义 PHP 模块/扩展)?

是否可以在使用cPanel的共享网络托管服务上安装phalcon(自定义 PHP PECL 扩展/模块),或者它通常需要 root 访问权限?

也就是说,我是否仍然可以在我现有的主机上以某种方式获得 phalcon 的好处而不必租用 VPS?

php

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

服务器增量备份到 AWS Glacier

我希望将各种目录和文件从 Linux 服务器备份到 AWS Glacier。我正在努力解决如何管理此问题的详细信息。

增量备份

我想增量上传文件。所以基本上,如果一个文件没有改变,如果它已经存在,我不想再次将它上传到 Glacier。我想我已经弄清楚了这部分。由于您无法立即获得 Glacier 保管库中档案的即时列表,因此我将保留上传文件的本地数据库,以便能够分辨保管库中存在哪些内容,哪些不存在。这将允许我进行增量备份(仅上传丢失或更改的文件)。

无法覆盖文件?

根据(http://aws.amazon.com/glacier/faqs/):

存储在 Amazon Glacier 中的档案是不可变的,即档案可以上传和删除,但不能编辑或覆盖。

那么,如果我上传文件/存档,然后文件在本地更改,下次我进行备份时,Glacier 将如何处理这个问题,因为它无法用新版本覆盖文件?

删除旧数据

AWS 对删除不到 3 个月的档案收取每 GB 0.03 美元的费用。由于我正在备份本地服务器,因此我想删除本地不再存在的存档。组织这个的最佳方式是什么。使用本地存储的存档清单来确定哪些数据不再存在,如果数据超过 3 个月,是否将其从 Glacier 中删除?这看起来很简单,但有没有更好的方法呢?

单个文件与 TAR/ZIP 文件

您可以将单个文件作为档案上传,或者在上传之前将文件分组为 TAR 或 ZIP 文件以提高效率。TAR/ZIP 文件的想法很吸引人,因为它使它更简单并且您产生的存储费用更少,但我想知道我将如何处理增量上传。如果上传了包含 10,000 个文件的 20 MB zip 文件,并且其中一个文件在本地发生了更改,我是否需要再上传 20 MB 的 zip 文件?现在我需要承担在这些 zip 文件中存储几乎所有内容的 2 个副本的成本......此外,我将如何处理删除本地不再存在的 ZIP 文件中的内容?由于我不想删除整个 zip 文件,现在我要支付费用来存储不再存在的文件。

也许我想多了。解决这些问题最直接的方法是什么?

我不知道这是否重要,但我正在为此备份脚本使用 PHP SDK。此外,我不想先上传到 S3 存储桶,然后再将存储桶备份到 Glacier,因为我现在还必须支付 S3 存储和传输费用。

backup php cron amazon-web-services amazon-glacier

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

网络服务器问题 | IIS 的 PHP 管理器

我正在使用带有 IIS 8 的 Windows Server 2012。

我通过 Web 平台安装程序安装了 PHP 5.5,除了“用于 IIS 的 PHP 管理器”之外,所有安装都成功。

任何想法为什么?下面我将插入日志:

=== Verbose logging started: 7/27/2014 0:58:28 Build type: SHIP UNICODE 5.00.9600.00 Calling process: C:\Windows\system32\inetsrv\InetMgr.exe ===
MSI (c) (A4:94) [00:58:28:434]: Resetting cached policy values
MSI (c) (A4:94) [00:58:28:434]: Machine policy value 'Debug' is 0
MSI (c) (A4:94) [00:58:28:434]: ******* RunEngine:
******* Product: C:\Users\Administrator\AppData\Local\Microsoft\Web Platform Installer\installers\PHPManager\58698059E6E09CCF19706DBF8B1331AB51BCC662\PHPManagerForIIS-1.2.0-x64.msi
******* Action: 
******* CommandLine: **********
MSI (c) (A4:94) [00:58:28:434]: Client-side and UI is none or basic: Running entire install …
Run Code Online (Sandbox Code Playgroud)

iis php windows-server-2012

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

en_US.utf8 和 en_US.UTF-8 之间有区别吗?

服务器信息(删除了 DNS 和 IP):

cat /proc/version && uname -a && java -version

Linux version 2.6.16.33-xenU (*************) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #2 SMP Wed Aug 15 17:27:36 SAST 2007
Linux ************* *************-xenU #2 SMP Wed Aug 15 17:27:36 SAST 2007 x86_64 x86_64 x86_64 GNU/Linux
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我有一些 PHP 代码正在读取 Excel 文件并进行字符串比较。由于似乎是语言环境问题,它在服务器上失败。然而,在我的本地机器(OSX 10.8.5 Mountain Lion)上,它可以工作!

在我的本地机器上,语言环境是 en_US.UTF-8。在服务器上,语言环境是 POSIX,但我将其更改为 en_US.utf8,因为当我查看locale -a时没有 en_US.UTF-8 …

php localization charset utf-8 encoding

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

PHP 安装在干净的 Amazon Linux AMI 上

我正在尝试编写一个脚本,以便使用 php55 和 Amazon PHP sdk 启动新的 Amazon Linux EC2 实例。但是,我遇到了一个我认为是由 PHP 版本冲突引起的问题。我认为 yum 在这种情况下是如何工作的,我缺少一些东西。

归结为最简单的情况,如果我运行:

yum install -y httpd24 php55 php-amazon-sdk2
Run Code Online (Sandbox Code Playgroud)

我收到“错误:php55-common 与 php-common-5.3.29-1.7.amzn1.x86_64 冲突”

但是,如果我运行:

yum install -y httpd24 php55
Run Code Online (Sandbox Code Playgroud)

然后分别运行:

yum install -y php-amazon-sdk2
Run Code Online (Sandbox Code Playgroud)

它工作得很好。需要明确的是,当我运行这些命令时,系统上根本没有 PHP 版本,所以它与已经存在的东西没有冲突。

我对 yum 依赖项的工作方式不是很熟悉,但这似乎表明 php-amazon-sdk2 对 php55 很好,但由于某种原因,如果我同时安装它,它会试图强制 php53。解决此问题的正确方法是什么(意思是,我不想只是强制安装它,忽略依赖项,但我也不想在单独的步骤中执行这些操作)?

php amazon-ec2 amazon-web-services

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

nginx - 出于安全原因拒绝除 index.php 之外的所有 *.php 请求

操作系统:CentOS 7
nginx:1.6.2
httpd:apache 2.4.6
cms:Drupal 7

在我的服务器遭到入侵后,我从服务器中删除了所有内容,重新安装了操作系统和软件,并从备份中恢复了数据。现在我以最大安全性方式配置所有服务。

在详细研究访问日志后 - 我决定拒绝任何对 php 文件的请求,除了位于站点文档根目录中的index.php以提高安全性。

Nginx 访问日志内容很多,比如:

azenv2.php
az.php
Run Code Online (Sandbox Code Playgroud)

和

/*/wp-login.php
/administrator/index.php
/MyAdmin/index.php
Run Code Online (Sandbox Code Playgroud)

第一类 - 后门(其中一个入侵了我的网站,有人从我的服务器发送了大量垃圾邮件)。

第二 - 有人想找到流行的 cms 和实用程序并尝试使用 login@password,例如 admin@123456

我通过拒绝对 php 文件的请求来阻止这两个类别的原因是:

  1. 即使有人会上传 php-shell -也不可能使用它。

  2. 所有这些请求都是“不好的”修道院 - 由 nginx 拒绝它们将保护 drupal(httpd+php+mysql) 工作并消耗能量。

我当前对一台虚拟主机的配置:

server {

  listen <server-ip>;
  server_name <site-name>;

  location ~* /sites/default/files/styles/ {
    try_files $uri @imagestyles;
  }

  location @imagestyles {
    proxy_pass http://127.0.0.1:<port>;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    access_log off;
  }

  location …
Run Code Online (Sandbox Code Playgroud)

security php configuration nginx drupal

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

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
查看次数