2017年6月18日日曜日

Webアプリエンジニア養成読本 PHPメモ 主に失敗箇所、本の誤字脱字

つらつらとメモ。自分の間違いもあるが、本の間違いが非常に多い・・・。


■失敗

<?php



<? php
と書いていた(スペース不要)

その他、
templates, settings のs 抜け
sqlightと書いていた
など、スペルミス多発・・・

--
サーバのターミナルに

127.0.0.1:39330 Invalid request (Unexpected EOF)

というエラーが出るが、これはPHPのビルトインサーバの意味なしエラーで対処しようがないらしい。
http://stackoverflow.com/questions/29141240/php-local-server-invalid-request-unexpected-eof

--

$ sudo add-apt-repository ppa:ondrej/php5

という部分、p34) php5と書くとエラー。phpのみで通る。

なんやかんで、PHP5.6をいれる場合はこうしたらOK。
$ apt-get install php5.6-xml
https://github.com/oerdnj/deb.sury.org/issues/472

だめだったので、php7.1を入れました。

--

p40 がおかしい
リスト5は不要
autoloadの部分はリスト1で既に記述してあるのに追記という表現になっている。

--

■失敗

'Slim\Slim' not found in /dir/XXX/

というエラーでハマる

autoloadが正常に機能していない?

require '../vendor/autoload.php';

を消してしまっていたのが問題だった。
「修正し」という表現がどうにも誤解してしまったようだ。反省。

--

~/Tinitter/lib$ atom /Base/DB.php

こういう感じでフォルダを指定してphpファイルを作ったら、保存できなかった。Baseのpermissionがないという警告。

~/Tinitter/lib/Base$ atom DB2.php

であれば問題なかった。

リネーム。名前の違うファイルに移動する。
~/Tinitter/lib/Base$ mv DB2.php DB.php

--

p47
リスト22では → リスト6 ではの間違い。(別の章から通しで番号をつけていた名残の直し忘れ?)

--

$ sudo apt install composer
でインストールした
$ composer require respect/validation
でrespect/validationを入れた

--

class Post extends \Respect\Validation\Validator

というクラス継承で正常に動いている。

php ~/composer.phar update


--

■PDO driver が入っていないエラー

リスト15

Slim Application Error
The application could not run because of the following error:

Details

Type: PDOException
Message: could not find driver
File: /home/shimo/Tinitter/vendor/illuminate/database/Illuminate/Database/Connectors/Connector.php
Line: 47

というエラーが出て沈没

// githubの最終には以下が入っていない・・が関係なさそう
// $app->post('/post/commit', '\Tinitter\Controller\Post:commit');

[Wed May 17 20:33:10 2017] Tinitter\Model\Post Object
(
    [connection:protected] =>
    [table:protected] =>
    [primaryKey:protected] => id
    [perPage:protected] => 15
    [incrementing] => 1
    [timestamps] => 1
    [attributes:protected] => Array
        (
        )

    [original:protected] => Array


protectedなのが問題?

と思ったが、

$post->save();
の後が現れなかったので、ここが問題であるようだ

結局、ドライバが入っていないのはそもそもインストールされていないということだった
$ sudo apt-get install php7.0-sqlite3

http://stackoverflow.com/questions/30009618/why-cant-create-the-sqlite-db-with-pdo
http://stackoverflow.com/questions/37894766/how-to-solve-php-7-not-found-sqlite3
http://stackoverflow.com/questions/35240414/laravel-5-pdoexception-could-not-find-driver

これで解決。

///別PCでは、上記では解決せず。--> phpのバージョンが違ったので、変えればOK

--

本文が現れない・・・
sqlite.dbには格納されているので表示の問題

show.twigの
<div class="body">{{ post.body|nl2br }}</div>
は|(パイプ)を読み間違えていました。


--

■失敗
page2以降が表示されない・・・
show.twigのあたりがおかしかった模様
{% if page_num == 1 %}

--

既にインストールしてあるものを再度書いてある
CSRFは slim/Extraに・・・


Exception: Sessions are required to use the CSRF Guard middleware. in /home/shimo/Tinitter/vendor/slim/extras/Slim/Extras/Middleware/CsrfGuard.php:63

となっているので、インストールしなおし?

$ php composer.phar update

でやり直してみたが、特に変更なし
CSRFのプラグイン有効化の場所が違う?

https://github.com/uzulla/Tinitter

これでphpサーバ立ち上げ
~/Tinitter/htdocs$ php -S 127.0.0.1:8080

--

二周目。新PCでやってみる

Type: Twig_Error_Loader
Message: The "./templates" directory does not exist
というエラーが出て、図6のようにならない。
templatesのディレクトリの設定が間違っている?
ディレクトリのpathの受け渡しがおかしいようだ。が、なんともならず。最初からやり直すことにする。

templates -> template スペルミスだった s抜け
autoescape -> o が抜けるスペルミスだった

0 件のコメント:

コメントを投稿