file()[function.file]:在服务器配置错误中禁用URL文件访问

时间:2012-05-07 16:55:11

标签: php

我的代码是

<?php
if ($_POST['hiddensms']) {
    ini_set("allow_url_fopen", "ON");
    ini_set("allow_url_include", "ON");
    $smsno = explode(',', $_POST['hiddensms']);
    foreach ($smsno as $mono) {
        $baseurl         = "http://api.xxxxxxxxxxxx.com";
        $sql_q           = "select firstname,lastname from tbl_newsletter where phone='" . $mono . "'";
        $resultcount     = mysql_query($sql_q);
        $row_total_count = mysql_fetch_array($resultcount);
        $first_name      = $row_total_count['firstname'];
        $last_name       = $row_total_count['lastname'];
        if ($_POST['sel_name_sms'] == 'FirstName') {
            $setname = $first_name;
        } else {
            $setname = $last_name;
        }
        $smsBodyText = $_POST['sal_sms'] . ' ' . $setname . '\n';
        $text        = urlencode($smsBodyText . $_POST['msg_body']);
        $to          = $mono;
        $url         = "$baseurl/http/auth?user=$user&password=$password&api_id=$api_id";
        // do auth call
        $ret         = file($url);
        // explode our response. return string is on first line of the data returned
        $sess        = explode(":", $ret[0]);
        if ($sess[0] == "OK") {
            $sess_id = trim($sess[1]); // remove any whitespace
            $url     = "$baseurl/http/sendmsg?user=xx&password=xxxxx&api_id=3370743&to=$to&text=$text";
            //ht$ret = file($url);
            $send    = explode(":", $ret[0]);
            if ($send[0] == "ID") {
                echo "success\nmessage ID: " . $send[1];
            } else {
                echo "send message failed";
            }
        } else {
            echo "Authentication failure: " . $ret[0];
        }
    }
}
?>

我正在尝试通过api发送短信,但是却给了我这个错误

警告:file()[function.file]:在第622行的/xxxxxxxsubscriber-list.php中的服务器配置中禁用了URL文件访问     警告:文件(http://api.xxxxx.com/http/auth?user=xx&xx&api_id=xx)[function.file]:无法打开流:在/ xxxxxx / subscriber中找不到合适的包装器-list.php在622行     身份验证失败:

我设置.htaccess就像

<IfModule mod_php5.c>
php_admin_value allow_url_fopen On
php_admin_value allow_url_include On
</IfModule>

但它不起作用。我不知道该怎么办,如果有任何想法,请帮帮我

我已经在php.ini

中搜索了他们建议的网页
allow_url_fopen = On
allow_url_include = On

但是我无法访问php.ini,所以还有其他什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

此错误告诉您服务器上的allow_url_fopen已关闭。可以配置服务器以忽略它们放置在其Web根目录中的用户定义的php.ini文件。由于他们遇到了这个麻烦,他们可能会阻止你进行其他黑客攻击(例如你的htaccess文件中)。

出于安全原因,您的主机已禁用

allow_url_fopen!它应该并且应该保持禁用状态。所以不要试图打开它。他们不希望人们跑步谁知道什么,被黑客攻击,并让其他人在服务器上面临风险。

解决此问题的唯一方法是获取新主机,或者获得具有root访问权限的VPS或专用服务器。

allow_url_fopen的替代方法是cURL。你可以用curl做同样的事情。

cURL示例:http://php.net/manual/en/curl.examples-basic.php