使用FTP上传PHP slim

时间:2017-10-15 16:46:56

标签: php ftp slim

请参阅下面的解决方案

我的php slim网址在我的本地工作正常。 但如果我上传到使用FTP到我的在线服务器, 我收到404错误, 任何想法为什么?

这是我的路线代码:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

$fb = new \Facebook\Facebook([
  'app_id' => '',
  'app_secret' => '',
  'default_graph_version' => 'v2.9',
  ]);

$app->options('/{routes:.+}', function ($request, $response, $args) {
    return $response;
});

$app->add(function ($req, $res, $next) {
    $response = $next($req, $res);
    return $response
            ->withHeader('Access-Control-Allow-Origin', '')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST');
});

//get all
$app->post('/api/mykenteken', function (Request $request, Response $response) use ($fb){
  $token = $request->getParam('token');

  try {
    $fb_response = $fb->get('/me', $token);
  } catch(\Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo '{"error": {"text": "'.$e->getMessage().'"} }';
    exit;
  } catch(\Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo '{"error": {"text": "'.$e->getMessage().'"} }';
    exit;
  }

  $id = $request->getParam('id');

  $sql = "SELECT * FROM test where id = $id";

   try{
         // Get DB Object
         $db = new db();
         // Connect
         $db = $db->connect();
         $stmt = $db->query($sql);
         $users = $stmt->fetchAll(PDO::FETCH_OBJ);
         $db = null;
         echo json_encode($users);
     } catch(PDOException $e){
         return $response->withStatus(400)->write('{"error": {"text": '.$e->getMessage().'}}');
     }
});

我使用fileZilla上传了我的php slim文件。 我在当地使用作曲家。

在我的本地我将我的IP重定向到localdev域

更新

我的php代码在我的在线服务器上的这条路径中:

域/的public_html /β/ PHP的

这是php文件夹的文件夹结构:

image

.htaccess代码是:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

Soltion

我遇到了什么问题:

我必须查看这个文件夹:domain / public_html / beta / php / public 而不是:domain / public_html

所以

api的链接必须是:http://www.domain.nl/beta/php/public/myapilink 而不是:http://www.domain.nl/myapilink

1 个答案:

答案 0 :(得分:0)

404是服务器错误,因此问题是该文件不可用,而不是您的代码。检查文件上传后,将其设置为公开可读。即使文件被标记为这样,您也可能需要检查服务器上包含它的文件夹是否也设置为公开可读。

查看您的代码,两个问题突出。第一个是$db = $db->connect();需要一些参数来指定数据库,用户名和密码(或其他连接设置,具体取决于数据库的设置方式)。我不确定你的PHP引擎和数据库是如何设置的,但是看看你的代码,它可能会涉及更换:

$db = new db();

有类似的东西:

$db = new PDO( "mysql:host=$servername;dbname=$dbName", $username, $password );

第二个问题是您的代码极易受SQL injection攻击。要解决此问题,请替换:

$sql = "SELECT * FROM test where id = $id";

$sql = "SELECT * FROM test where id = :id";

$stmt = $db->query($sql);

使用:

$stmt = $db->prepare( $sql );
$stmt->bindValue( ':id', $id, PDO::PARAM_STR );
$stmt->execute();

此过程称为“使用预准备语句”。它会为你节省很多心痛!