我想要做的是将“domain1”中的“file1.php”包含到“domain2”上的“file2.php”中。所以我想我应该做的是这样的:
file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';
但这行不通,原因我无法真正理解。所以我所做的就是将我的路径添加到包含路径中。就像是:
file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';
那么您能给我一些关于我做错的地方的提示吗?
Thanks
更新 - 无论哪种方式我都会收到以下错误消息:
Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4
我也尝试过打开和关闭安全模式。
UPDATE2:此外,我已将测试文件的权限更改为 777,并且仔细检查了 bash 中包含文件的路径。
解决方案:我已经成功解开了这个谜团!我的托管公司使用 Plesk 来管理域名等。此外,php.ini 中的错误报告级别不是 E_ALL。当我将错误报告设置为 E_ALL 时,我收到一条警告:
Warning: require() [function.require]: open_basedir restriction in effect.
所以我进入 /var/www/vhosts/domain2/conf/httpd.include 并编辑 open_basedir 路径。请注意,这不是一个持久的解决方案,因为每次更改域配置时 plesk 都会重写此配置文件。您应该做的是编辑(或创建)同一目录中的“vhost.conf”文件,然后运行:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD
这应该重新配置您的域的设置,但由于某些奇怪的原因,它无法与 open_basedir 一起使用。我可以修改其他内容,例如 document_root 但它不会更改 open_basedir,但这是另一个问题:D
最终解决方案:对于那些有同样问题的人来说,这里是最终有效的代码。我刚刚在 /var/www/vhosts/domain2/conf/vhost.conf 中添加了此内容(您可以将 '/var/www/vhosts' 更改为 '/' 或您喜欢的任何内容):
<Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts"
</IfModule>
Options -Includes -ExecCGI
</Directory>
谢谢大家!