PHP脚本通过HTTP运行,但不通过HTTPS

我正在使用从HTTP运行的脚本而不是从HTTPS运行的项目中遇到实际问题。

这个问题出现的地方是需要权限来通过exec()passthru()在服务器上执行一个命令,或者当脚本尝试使用fopen打开一个文件时。

当使用HTTPS时,exec()和passthru()函数返回一个127错误,我相信这是一个未find命令的错误,而fopen将抛出一个Permission deniedexception。

最重要的是我不能真正理解服务器上的设置。 我确定他们运行的是Apache,但是我在/etc/group文件中看不到它。 我想这是因为他们有plesk(有一个psacln组)。

我真的需要解决这个问题,因为它吸了几天和几天的时间。 但更重要的是,我真的很想了解这里发生了什么,为什么。

任何人都可以告诉我是否可以从HTTPS运行这些脚本?

操作系统是Ubuntu和PHP版本是5.2.4

非常感谢

有关当前设置的更多信息

 httpd.conf is blank 

 //ports.conf Listen 80 <IfModule mod_ssl.c> Listen 443 </IfModule> 

 // envvars export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export APACHE_PID_FILE=/var/run/apache2.pid 

 // part of apache2.conf where all the configuration seems to be # These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} 

apache_run_user和apache_run_group被设置为www-data是什么意思? 这应该设置为别的东西吗? – Apache或者psacln?

更新

我将表单所在目录的权限更改为777,即使使用HTTPS,现在使用fopen的脚本也能正常工作。

显然我应该需要这样做,这是坏的。 我应该看看PHP是属于哪个组? 为什么这会从HTTP到HTTPS有所不同?

在我看来,这不是一个团体的问题。 访问该文件的“组”始终是来自Apache的“www-data”组。

我唯一可能看到的是,为什么当通过https执行脚本时,必须“chmod 777”所有的文件是httpsvhost的configuration错误。

也许有一个在您的http虚拟主机文件,允许这种types的访问,不同于你的https指令。

configuration片段将有所帮助。

你有访问Plesk吗? 如果是这样,进入域名,然后虚拟主机设置,并查看是否使用一个单一的目录来安置SSL和非SSL内容。 如果没有,那么https将有不同的DocumentRoot(可能是httpsdocs)。

SSL有一个不同的configuration文件: /var/www/vhosts/mydomain/conf/vhosts_ssl.conf

编辑完conf文件后,请确保:

 sudo /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=mydomain sudo apache2ctl reload 

编辑

此外,FYI,mydomain / conf中的conf文件中的指令会覆盖Plesk的vhostconfiguration,所以在这些文件中有些影响虚拟主机的指令是不可见的。