关于PHP安全模式的问题:
默认情况下,它在PLESK共享主机帐户环境中打开:虽然在我的网站上似乎工作正常,但它可能会更快/更好地关闭时工作?我不太了解下面的文字,特别是PHP的解释:
PLESK:
默认情况下,PHP配置为在具有功能限制的安全模式下运行.在启用安全模式的情况下,某些Web应用程序可能无法正常工作:如果站点上的应用程序因安全模式而失败,请关闭安全模式
PHP.net:
自PHP 5.3.0起,此功能已被弃用.非常不鼓励依赖此功能.PHP安全模式试图解决共享服务器安全问题.尝试在PHP级别解决此问题在架构上是不正确的,但由于Web服务器和操作系统级别的替代方案不太现实,许多人,特别是ISP,现在使用安全模式.
问题1:何时/出于什么原因人们会将安全模式打开?
问题2:何时/出于什么原因人们应该保持安全模式关闭?
我正在使用Kohana框架(3.0.9),它生成每日日志.我希望邮寄日志文件,如果在CRON运行脚本的前一天发送了一个日志文件,但经过几天的尝试,我无法弄清楚如何在PHP CLI模式中推迟safe_mode.
当我在网上运行我的脚本时,没有问题.但我想在我的Plesk 9.5.2服务器上运行脚本作为CRON任务(或以root用户身份在命令行上运行)我收到以下错误:
ErrorException [2]:dir():安全模式限制生效.其uid为10001的脚本不允许访问uid 48~APPATATH/classes/controller/ajax.php所拥有的/var/www/vhosts/mydomain.com/subdomains/mysubdomain/httpdocs/application/logs/2011/01 [ 181]
我已经在我的Plesk控制面板中关闭了SAFE MODE,它适用于Web请求,但不能在命令行或作为CRON任务.
我正在使用以下代码来测试它是否正常工作:
$d = dir(APPPATH.'logs/2011/01/');
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
echo $entry."\n";
}
$d->close();
Run Code Online (Sandbox Code Playgroud)
我可以读取目录APPPATH.'logs /',以及目录APPPATH.'logs/2011',但是每月用日常日志文件表示的目录总是会出错.
我将我的网站托管在共享主机上,最近将服务器更改为安全模式(甚至没有通知).我使用一个从服务器下载文件的功能,使用readfile()函数(我使用php).现在,在safe_mode中,此函数不再可用.是否有替代或解决方法来处理用户可以下载文件的情况?
谢谢
我在运行getimagesize的服务器上遇到一些问题远程URL图像上。
例如,如果我在本地服务器上运行此代码,它将正常工作并返回OK:
<?php
$file = 'http://inspiring-photography.com/wp-content/uploads/2012/04/Culla-bay-rock-formations-Isle-of-Uist.jpg';
$pic_size = getimagesize($file);
if (empty($pic_size))
{
die('FALSE');
}
die('OK');
?>
Run Code Online (Sandbox Code Playgroud)
但是,如果我在服务器上运行相同的代码,则无法使其正常运行。您可以帮助我确定要求启用哪些设置吗?
我认为其中一些可能涉及:
您可以帮助我确定正确的配置来解决此问题吗?
提前非常感谢您。
php ×4
safe-mode ×4
cron ×1
fopen ×1
getimagesize ×1
mod-security ×1
performance ×1
plesk ×1
readfile ×1