繁体   English   中英

Plesk的Apache和服务器的Apache之间的PHP版本冲突

[英]Conflicting PHP versions between Plesk's Apache and the server's Apache

这是使用/ action1 / action2而不是?action1 =&action2 =时Session_start无法读取会话的延续。 这个问题的简短形式是,我需要服务器的Apache实例指向Plesk的Apache版本。 如果Plesk的PHP7版本随附libphp7.so文件,这将是微不足道的。 它不是。 因此,有...

A)一种变通办法,它允许我的服务器Apache指向Plesk的PHP安装。 要么...

B)是否可以使Plesk的Apache安装成为服务器上唯一的Web服务器?

为您提供上一个问题的简短版本。 我更喜欢使用URI路径(例如example.com/action1/action2)来定向我的程序。 这是通过使用.htaccess文件允许将action1文件解释为PHP文件来完成的。

RewriteEngine On
RewriteBase /
Action application/x-httpd-php modules/libphp7.so
AddHandler application/x-httpd-php .php
<Files action1>
  SetHandler application/x-httpd-php
</Files>

似乎正在发生的任何正常的PHP文件(例如index.php )都是使用Plesk的PHP版本执行的。 但是,当涉及.htaccess时(尽管执行了action1 ,尽管实际上它已符号链接到index.php ),但是突然使用的是服务器的PHP安装。

我曾考虑过尝试使用Plesk的配置来重新配置服务器的Apache服务器,但是将配置拖出Plesk证明是一个艰巨的过程。

感谢您的投入。

问题已经解决,至少在我愿意解决的范围内。 在虚拟主机Apache配置文件中,我们有...

<Files ~ (\.php$)>
    SetHandler proxy:unix:///var/www/vhosts/system/wwphelps.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>

这就是Plesk通过域名专门将一个版本的PHP附加到另一个版本的方式。 Apache的全局规则解释了所有不属于该规则的内容,对我来说,这是另一种安装PHP的规则。 (为什么Plesk没有全局覆盖来指向他们自己的PHP安装有点奇怪,但是我怀疑这是他们以前从未遇到过的错误。)因此,从逻辑上讲,我们只需要添加即可我们要处理的每个文件都没有.php后缀...

<Files action1>
    SetHandler proxy:unix:///var/www/vhosts/system/wwphelps.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>

的确,您需要这样做,但是对我来说,它并没有像宣传的那样起作用。 我的网页上只说“ Access Denied”(访问被拒绝),我的错误文件使我注意到FPM的security.limit_extensions参数。 换句话说,尽管明确标识了我想在没有后缀的情况下使用的文件,但FPM还是拒绝了该文件。 这是我懒惰的地方。 我将变量重置为空。 在Plesk中,可以通过在域的conf目录内创建或修改php.ini文件并添加(包括标头(如果尚未存在),则可以完成此操作)...

[php-fpm-pool-settings]
security.limit_extensions =

重新启动Apache,Bob是您的叔叔。

根据Google的快速搜索,从Plesk内部直接修改FPM参数的能力仍有待争论。

现在,这是有代价的。 从FPM套接字的角度来看,您网络根目录中的任何文件突然都可以作为PHP文件执行,包括客户上传的图像,而您却盲目地放在[ROOT] / images目录中。 除非您另行告诉Apache,否则任何事实都不会为您带来任何好处,除非所有旧文件都不会被解释为PHP文件。 但是,如果您对通过网站上传的所有文件进行了(a)彻底审核,以确保它们符合要求,并且(b)保存在Web根目录之外或数据库中,从而没有人受到保护,那么您会得到更好的保护。可以通过直接引用它们来“执行”它们。

最后,应该有一种方法可以在配置文件中覆盖那些我有意违反security.limit_extensions的文件。 不幸的是,FPM和Apache似乎无法互相通信,否则使用该块将完全覆盖security.limit_extensions。 就我所知,有一种方法可以做到。 我很想知道,但是我有一个可行的解决方案,因此我可以重新工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM