$doc_href, 'target' => '_blank', ), pht('Configuring a Preamble Script'))); $this->newIssue('php.remote_addr') ->setName(pht('No REMOTE_ADDR available')) ->setSummary($summary) ->setMessage($message); } if (ini_get('mysqli.allow_local_infile')) { $summary = pht( 'Disable unsafe option "%s" in PHP configuration.', 'mysqli.allow_local_infile'); $message = pht( 'PHP is currently configured to honor requests from any MySQL server '. 'it connects to for the content of any local file.'. "\n\n". 'This capability supports MySQL "LOAD DATA LOCAL INFILE" queries, but '. 'allows a malicious MySQL server read access to the local disk: the '. 'server can ask the client to send the content of any local file, '. 'and the client will comply.'. "\n\n". 'Although it is normally difficult for an attacker to convince '. 'this software to connect to a malicious MySQL server, you should '. 'disable this option: this capability is unnecessary and inherently '. 'dangerous.'. "\n\n". 'To disable this option, set: %s', phutil_tag( 'tt', array(), pht('%s = 0', 'mysqli.allow_local_infile'))); $this->newIssue('php.mysqli.allow_local_infile') ->setName(pht('Unsafe PHP "Local Infile" Configuration')) ->setSummary($summary) ->setMessage($message) ->addPHPConfig('mysqli.allow_local_infile'); } } }