我正在使用从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,所以在这些文件中有些影响虚拟主机的指令是不可见的。