这是Session_start fails to read session when /action1/action2 rather than ?action1=&action2= is used的延续。这个问题的简短形式是我需要服务器的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>
使用Plesk的PHP版本执行任何正常的PHP文件(例如,index.php
)。但是,当.htaccess
涉及(执行action1
时,尽管它与index.php
符号链接),突然之间是服务器正在使用的PHP安装。
我曾考虑尝试使用Plesk的配置重新配置我的服务器的Apache服务器,但只是将配置拖出Plesk证明是一个令人生畏的过程。
感谢您的意见。
答案 0 :(得分:0)
问题解决了,至少在我愿意解决它的时候。在虚拟主机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安装的全局覆盖是一个奇迹,但我怀疑这是他们以前从未遇到的错误。)所以,从逻辑上讲,我们&#39 ; d只需添加我们想要处理的每个文件而不使用.php后缀...
<Files action1>
SetHandler proxy:unix:///var/www/vhosts/system/wwphelps.com/php-fpm.sock|fcgi://127.0.0.1:9000
</Files>
你确实需要这样做,但对我而言,它并没有像宣传的那样工作。我的网页只是简单地说“拒绝访问”#34;我的错误文件指向FPM的security.limit_extensions参数。换句话说,尽管具体标识了我想要使用的没有后缀的文件,FPM仍然拒绝它。这是我懒惰的地方。我将变量重置为空。在Plesk中,通过在域的conf目录中创建或修改php.ini文件并添加(包括标题,如果它还没有在那里)来完成...
[php-fpm-pool-settings]
security.limit_extensions =
重启Apache,鲍勃是你的叔叔。
根据Google搜索的快速搜索,从Plesk内部直接修改FPM参数的能力仍有争议。
现在,这需要付出代价。从FPM套接字的角度来看,突然之间你的任何文件都是网络根源&#34;可以&#34;作为PHP文件执行,包括客户上传的图像,你盲目地放入[ROOT] / images目录。除非您已经告诉过Apache,否则任何旧文件都不会被解释为PHP文件,因此您可以部分保存。但是,如果您通过网站上传的所有文件都经过彻底审查以确保它们是他们声称的内容并且(b)要么保存在网络根目录之外,要么保存在数据库中,那么您将受到更好的保护。没有人可以&#34;执行&#34;直接引用它们。
最后,应该有一种方法可以在配置文件中覆盖那些我想故意违反security.limit_extensions的文件。不幸的是,FPM和Apache似乎没有相互通信,否则使用该块将完全覆盖security.limit_extensions。尽管如此,我知道有一种方法可以做到这一点。我很想知道,但我有一个有效的解决方案,所以我重新开始工作。