[英]Upload PHP slim using FTP
請參閱以下帖子中的解決方案
我的PHP苗條網址在我的本地設備上運行良好。 但是,如果我使用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 / beta / php
這是php文件夾的文件夾結構:
.htaccess代碼是:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
解決
我有什么問題:
我必須查看此文件夾:domain / public_html / beta / php / public而不是:domain / public_html
所以
api的鏈接必須是: http : //www.domain.nl/beta/php/public/myapilink而不是: http : //www.domain.nl/myapilink
404是服務器錯誤,因此問題在於該文件不可用,代碼中沒有任何內容。 在文件上傳后,檢查是否將其設置為公開可讀。 即使文件被標記為這樣,您可能仍需要檢查服務器上包含該文件的文件夾是否也設置為可公開讀取。
查看您的代碼,有兩個問題仍然存在。 第一個是$db = $db->connect();
需要一些參數來指定數據庫,用戶名和密碼(或其他連接設置,具體取決於數據庫的設置)。 我不確定您的PHP引擎和數據庫的設置方式,但是查看您的代碼,它很可能涉及替換:
$db = new db();
與類似:
$db = new PDO( "mysql:host=$servername;dbname=$dbName", $username, $password );
第二個問題是您的代碼很容易受到SQL注入的攻擊。 要解決此問題,請替換:
$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();
此過程稱為“使用准備好的語句”。 它將為您節省很多心痛!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.